用Unity3d的maxtrix实现的WolrdToScreen
来源:互联网 发布:2017年淘宝客市场规模 编辑:程序博客网 时间:2024/05/18 08:50
最近在使用Unity的转换矩阵的时候,遇到点问题,现在解决了,贴出来,大家有需要的可以拿走
using UnityEngine;
public class CameraTest : MonoBehaviour
{
void Start()
{
Vector3 p0 = new Vector3(0, 12.58f, 10);
Vector3 screenP = Camera.main.WorldToScreenPoint(p0);
Debug.Log(screenP);
Matrix4x4 mvp = Camera.main.projectionMatrix * Camera.main.worldToCameraMatrix;
Vector3 screenP1 = WorldToScreen(mvp, p0, Screen.width, Screen.height);
Debug.Log(screenP1);
}
Vector3 WorldToScreen(Matrix4x4 camMVP, Vector3 point, float renderWidth, float renderHeight)
{
Vector3 result;
result.x = camMVP.m00 * point.x + camMVP.m01 * point.y + camMVP.m02 * point.z + camMVP.m03;
result.y = camMVP.m10 * point.x + camMVP.m11 * point.y + camMVP.m12 * point.z + camMVP.m13;
result.z = camMVP.m20 * point.x + camMVP.m21 * point.y + camMVP.m22 * point.z + camMVP.m23;
float num = camMVP.m30 * point.x + camMVP.m31 * point.y + camMVP.m32 * point.z + camMVP.m33;
float oriNum = num;
num = 1f / num;
result.x *= num;
result.y *= num;
result.z = oriNum; // num contains the 1 / (distance to camera), ideal to linearly interpolate the depth in a rasterizer
point = result;
point.x = (point.x * 0.5f + 0.5f) * renderWidth;
point.y = (point.y * 0.5f + 0.5f) * renderHeight;
return point;
}
}
- 用Unity3d的maxtrix实现的WolrdToScreen
- unity3d 单选框的实现
- 用Unity3D实现简易的AR Demo
- Unity3D飞行模拟的实现
- Unity3D 消息管理机制的实现
- Unity3D 消息管理机制的实现
- Unity3d-四元数到矩阵的实现
- Unity3D实现弹幕的效果
- 【虚拟现实】Unity3D+VR的实现
- 实现一个Unity3d的WaitForSeconds
- Unity3D-FSM的简单实现
- [Unity3D]在Unity3D中实现简单的碰撞检测
- [Unity3D]在Unity3D中实现简单的碰撞检测
- [Unity3D]Unity3D游戏开发之再话小地图的实现
- [Unity3D]Unity3D游戏开发之刀光剑影特效的实现
- [Unity3D]Unity3D游戏开发之换装系统的实现
- [Unity3D]Unity3D游戏开发之《愤怒的小鸟》弹弓实现
- [Unity3D]Unity3D游戏开发之《愤怒的小鸟》弹弓实现
- java synchronized的理解以及内置锁和对象锁
- c#之字符串的不可变性
- 【C#之值类型vs引用类型】
- DataInputStream
- 欢迎使用CSDN-markdown编辑器
- 用Unity3d的maxtrix实现的WolrdToScreen
- 时序约束之相关概念
- 使用 @RequestMapping 映射请求
- 不允许连续点击()两种方法()
- OPENGL 纹理贴图 过滤 mipmaps (shader)
- javascript
- 使用FileZilla Ftp 客户端工具上传vxWorks镜像的注意事项
- Web安全测试(一)-手工安全测试方法&修改建议
- HDU 4355 Party All the Time