【问题标题】:What is an Algorithm for look at function?什么是查看函数的算法?
【发布时间】:2020-05-13 11:18:45
【问题描述】:

我有一个仅通过设置以下值来控制的相机:

[[position_x, position_y, position_z],
 [focal_point_x, focal_point_y, focal_point_z],
 [view_up_x, view_up_y, view_up_z]]

我有一个我想看的点,在那个点上是正常的,并且离它有一段距离我想看。

如何设置这样的相机模型来观察一个点(有一个法线向量和从哪里看的距离)?

【问题讨论】:

  • 将点在框架中居中,使其尽可能小(边缘尽可能锐利)。
  • normal at that point 是什么意思?
  • @MBo:我尝试查看网格上的一个点,所以在那一点我有一个法线来帮助我看到那个网格 - 看看它

标签: algorithm math 3d camera geometry


【解决方案1】:

我不确定我是否正确,但应该是这样的:

C = P + (d/len(N)) * N
k = [0 0 1]
V = -N;
T = cross(V, k)
U = cross(T, V)
F = C + (z*/len(V)) * V

在哪里,
C:相机位置(洋红色点)
P:目标位置(红色点)
N:法线向量(黑色向量)
d :所需距离
len():返回向量长度的函数
k:Z轴单位向量(灰色向量)
V:视图方向(红色向量)
@ 987654331@:平行于 XY 平面的临时向量(蓝色向量)
cross():返回两个向量叉积的函数
U:相机向上向量(绿色向量)
@987654334 @:相机焦点(洋红色 x)
z:缩放因子(正标量,即焦点到相机位置的距离)

注意几点:

  • 这始终保持向上向量的 z 分量为正。根据您对cross() 函数的实现,您可能需要交换参数。
  • [C, V, U, T] 实际上形成了一个 3-D 局部坐标系,其中 C 是它的原点,其余的是循环满足右手定则的 [单位] 轴向量。
  • Nk 平行时,您不能使用它。在这种情况下,上向量可以是任何平行于 X-Y 平面的任意向量。
  • 您应该决定的其余参数是控制缩放的z。焦点的位置取决于目标物体的大小和您需要的缩放量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-11
    • 2018-02-07
    • 2012-10-02
    • 2021-03-20
    • 2016-05-20
    • 2011-12-17
    • 1970-01-01
    相关资源
    最近更新 更多