求一个点在平面上的投影_unity获取物体坐标

求一个点在平面上的投影_unity获取物体坐标Unity计算投影点主要内容新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入主要内容本文旨在求得点在某一平面的投影点,主要包括Unity中InverseTransformPoint和TransformPoint方法。主要

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

主要内容

本文旨在求得点在某一平面的投影点,主要包括Unity中InverseTransformPoint和TransformPoint方法。主要效果如下:白色Cube为需计算投影点的原始点,红色Plane为白色Cube的投影平面,黄色Cube为白色Cube的投影点。
在这里插入图片描述
在这里插入图片描述

代码实现

为白色Cube添加如下代码:

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

public class Projectpoint : MonoBehaviour
{ 
    
    public Transform tragetPlane; //目标平面
    public Transform projectPoint; //投影点
    public Vector3 normal = Vector3.up;

    void Update()
    { 
   
        var Worldpos = transform.position;
        var Localpos = tragetPlane.InverseTransformPoint(Worldpos);
        Debug.Log("Cube对应目标平面当前的Local位置 " + Localpos);

        var dis = Vector3.Dot(Localpos, normal);       
        var vecN = normal * dis;
        Debug.Log("Local位置点乘法向量 up " + dis + " dos*nomal =" + vecN);

        Localpos = Localpos - vecN;
        Debug.Log("ObjLocal " + Localpos);

        projectPoint.position = tragetPlane.TransformPoint(Localpos);
        Debug.Log("目标平面下的Local局部坐标对应在全局的坐标 " + projectPoint.position);
    }
}

Jetbrains全家桶1年46,售后保障稳定

详解及原理

场景信息:
白色Cube世界坐标(0,1000,170)
投影平面Plane世界坐标(0,1010,170)
① 先计算白色Cube在投影平面内的局部坐标:InverseTransformPoint函数。该函数功能相当于把Cube放在Plane下,即Cube做为Plane的子物体时,Cube的坐标。
在这里插入图片描述
在这里插入图片描述
② 向量点积Dot:计算白色Cube局部坐标在平面法线方向(Vector3.up)的大小。获得Cubez局部坐标在法线方向的向量。
在这里插入图片描述

③ 根据 a = b + c向量加法计算投影点。上图并未清晰表现出向量的关系,我们可以适当调整平面角度,以清晰的角度来解释这一过程。
在这里插入图片描述
④ 找到投影点(但是对应于同一批面),将其对应到世界坐标系中:TransformPoint函数。A.TransformPoint(B)表示:B在A下的局部坐标对应的全局坐标。相当于把A的子物体B移出时的坐标。
在这里插入图片描述

写在最后

本文实现的plane是用Cube做的,结果可能和大家所得局部坐标不同,但是无关紧要,方法最重要,主要涉及到坐标转换和一些基础向量知识。最近做实验感觉向量在Unity中的应用还是比较多啊,还得好好干,才有足够的面包吃!最后,本文受启发于另一博主 传送门
好家伙继续干吧,今天朋友面试题目都是英文,社畜啊,看来用功是不能停歇的,加油吧!
希望对你有所帮助!Bye~~~~~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203587.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用decode函数

    使用decode函数Decode函数使用:Oracle的decode函数蛮有意思,是oracle独有的,国际标准SQL中并没有decode函数。语法DECODE(col|expression,search1,result1[,search2,result2,…,][,default])例子SELECTproduct_id,DECODE(warehouse_id,1…

    2022年7月25日
    7
  • Eclipse之代码自动保存设置

    Eclipse之代码自动保存设置Eclipse之代码自动保存设置

    2022年4月24日
    66
  • 基于Python的情感分析案例——知网情感词典

    基于Python的情感分析案例——知网情感词典近期老师给我们安排了一个大作业,要求根据情感词典对微博语料进行情感分析。于是在网上狂找资料,看相关书籍,终于搞出了这个任务。现在做做笔记,总结一下本次的任务,同时也给遇到有同样需求的人,提供一点帮助。1、情感分析含义情感分析指的是对新闻报道、商品评论、电影影评等文本信息进行观点提取、主题分析、情感挖掘。情感分析常用于对某一篇新闻报道积极消极分析、淘宝商品评论情感打分、股评情感分析、电影评论情感挖掘。情感分析的内容包括:情感的持有者分析、态度持有者分析、态度类型分析(一系列类型如喜欢(like),讨厌

    2022年8月23日
    7
  • Java最新JDK和API下载(持续同步更新于官网)

    Java最新JDK和API下载(持续同步更新于官网)Java最新JDK和API下载(持续同步更新于官网)提供涵盖所有主流操作系统(包括Windows、Linux、MacOS等)的Java最新稳定版JDK和对应API的下载以下所有JavaJDK的安装包、压缩包(免安装版)以及对应的API,均直接来自官网,没有添加其它任何额外内容;旨在便捷地获取最新版的JavaJDK(避免因地域原因被限制访问,因网络原因无法稳定有效下载等情况)更新时间:2021年3月17日…

    2022年7月26日
    19
  • centos7可视化桌面_centos安装gcc编译器

    centos7可视化桌面_centos安装gcc编译器7米太阳能路灯价格整套价格多少钱/报价表虽然科技在不断的进步和发展,但是在常规能源缺乏的情况下,人们不得不追求新能源的使用与利用,在我们生活中使用的LED太阳能路灯,就是利用太阳能为其提供能量,从而就减少了一部分能源的浪费。毕竟咱们买了产品之后不是指望着它坏而让售后来修的,那样对大家都不好。所以购买产品一定要看品质。有朋友问到小编说,7米太阳能路灯价格整套价格多少钱/报价表?就此来说要根据实际道路…

    2022年8月27日
    7
  • java事务总述_什么是先总述后详述

    java事务总述_什么是先总述后详述java事务总述一、java事务概述1.1、java事务简述1、简介事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列SQL操作,这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行。如果任何一个SQL操作失败,那么整个操作就都失败,所有操作都会回滚到操作前状态,或者是上一个节点。2、java事务和数据库事务的关联实际上,一个Java应用系统,如果要操作数据库,则通过JDBC来实现的。增加、修改、删除都是通过相应方法间接来实现的,事务的控制也相应转移到Java程序代码中。因

    2022年8月31日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号