【发布时间】:2015-08-27 18:54:01
【问题描述】:
在表面着色器中,给定世界的上轴(以及其他轴)、世界空间位置和世界空间中的法线,我们如何将世界空间位置旋转到正常吗?
即给定一个上向量和一个非正交的目标上向量,我们如何通过旋转它的上向量来变换位置?
我需要这个,所以我可以获得仅受对象旋转矩阵影响的顶点位置,而我没有可以访问。
这是我想要做的图形可视化:
- 向上是世界向上向量
- 目标是世界空间法线
- 位置是任意的
该图是二维的,但我需要为 3D 空间解决这个问题。
【问题讨论】:
-
您没有将旋转矩阵传递给着色器是否有原因?这似乎是最明显的解决方案,所以我假设缺少一些信息。
-
@rutter Unity 不会将旋转矩阵暴露给着色器,根据 2 小时的谷歌搜索。要是这么简单!
-
我对 Unity 着色器的攻击不多,但 this manual page 建议您应该有几个可用的矩阵。听起来你想要
UNITY_MATRIX_IT_MV? -
@rutter MV 的逆向转置不就是从相机空间到世界空间的转换吗?我需要的是
_World2Object之类的东西,但只有旋转部分。 -
如果你使用
_World2Object的左上角3x3 部分,你会得到一个只有旋转和缩放的矩阵。对于哪种效果,您需要转换后的位置?用例似乎有点不寻常,也许有另一种方法可以解决您的问题。
标签: unity3d transform hlsl cg geometry-surface