前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >求一个点在平面上的投影_unity获取物体坐标

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

作者头像
全栈程序员站长
发布2022-11-01 09:48:39
5670
发布2022-11-01 09:48:39
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

Unity计算投影点

主要内容

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码实现

为白色Cube添加如下代码:

代码语言:javascript
复制
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.cn/203587.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Unity计算投影点
  • 主要内容
  • 代码实现
  • 详解及原理
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档