unity 从深度纹理重建世界坐标

unity 从深度纹理重建世界坐标,第1张

根据深度纹理获取世界坐标很常用,可以实现很多有用的功能,比如简单的雾 / 扫描线等

主要参考

>

至于出现相同的坐标点,是你转换的位置不对;

ScreenToWorldPoint()参数是一个Vector3,其中Vector3x,Vector3y是屏幕上的坐标,而Vector3z则是相对于相机的深度。

前3个坐标为Z轴零,也是就是相对于相机朝向距离为0 的位置,其实就是相机的位置。所以3个坐标是一样的,就是相机的位置。

当前这种情况,你需要给需要转换的坐标一个深度。

在Unity中获取鼠标在Canvas的坐标非常简单,只需要使用InputmousePosition函数即可获取鼠标在Canvas上的坐标。该函数返回一个Vector3,其中包含X,Y和Z三个坐标,其中X和Y分别表示鼠标在Canvas上的X和Y坐标。另外,你还可以使用CameramainScreenToWorldPoint函数来将屏幕坐标转换为世界坐标,以便在游戏中使用鼠标坐标。

直接用WorldToScreenPoint方法[csharp] view plain copypublic Camera mycamera;//要转化到的目的摄像机,通常canvas在这个摄像机下(即canvas的render mode设置为这个摄像机)  Image kongjian;//自己要获取屏幕坐标的控件,可以是image,也可以是button等等  float x=mycameraWorldToScreenPoint(kongjiantransformposition)x;  float y=mycameraWorldToScreenPoint(kongjiantransformposition)y;  //x,y即为控件在屏幕的坐标cameraWorldToScreenPoint()方法返回的是一个position类型 是vector3类型,camera为要转化到的目标摄像机,传入的参数为控件的世界坐标  以下会发现得到的值不尽如人意,原因在于,这些

GetComponent<RectTransform>()sizeDelta

或者GetComponent<RectTransform>()rectsize

GetComponent<RectTransform>()sizeDelta

或者GetComponent<RectTransform>()rectsize

方法得到的宽高受到(相对于父物体)锚点的影响,所以楼主自行测试一下就会得到自己想要的答案

以上就是关于unity 从深度纹理重建世界坐标全部的内容,包括:unity 从深度纹理重建世界坐标、unity3d坐标问题!求解答~可再开问题增加悬赏!急!在线等、unity获取鼠标在canvs的坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9691266.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存