【问题标题】:how do I translate a vector from xyz to xy using a plane normal? (using hlsl)如何使用平面法线将矢量从 xyz 转换为 xy? (使用 hlsl)
【发布时间】:2021-06-21 07:37:42
【问题描述】:
float3 plane_normal = mul(mesh_Object2World, v.normal);
o.normal = o.worldPos - _Mouse.xyz;

//接下来,我不知道如何使用“plane_normal”将“o.normal”转换为 2d

【问题讨论】:

  • 你的意思是把它投影到飞机上?
  • 是的,所以它是 XY 维度的
  • 不,想象平面法线是一个屏幕,您需要在其上投影一个 3d 矢量。结果向量将在 XY 中,对吗?
  • 是的,所以?我不明白你的问题在哪里......你所说的屏幕是指实际的设备屏幕(像素空间)?你说的 XY 是什么意思?局部空间/像素空间/全局空间?也许它会有助于添加对您的实际用例/目标的更详细的描述

标签: c# unity3d math vector hlsl


【解决方案1】:

不确定您到底想做什么。但是在 Unity 中,2D 项目和 3D 项目是一样的。唯一不同的是默认背景,相机透视和 3D 使用 z 平面,即深度。

意思是Vector3(x, y, 0) == Vector2 (x, y),你需要做的就是设置Vector3.z = 0。所以Vector3(x, y, 0)Vector2 (x, y) 的法线是一样的。

【讨论】:

  • 我知道这一点,但它只有在矢量的方向与平面法线相同时才有效
  • OP 的问题是关于 HLSL(着色器)甚至在 Unity c# 中,这仅适用于您实际谈论 y = 0 的世界 XZ 平面的一种情况
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-07
  • 2012-11-29
相关资源
最近更新 更多