我正在努力实现一个基本上告诉我的函数,如果光线“足够接近”一个对象
基本上我实现了实现光线拾取 @nornagon 独奏来创建光线。我在屏幕上的对象以一个点为中心。我假设如果光线在该点的一定距离内,则选择该对象。
我称这 3 个点(X、Y、Z):_pickFrom、_pickTo 和 pO
首先,这是我根据屏幕上的鼠标位置计算射线的方法:
public static void Pick(int x, int y)
{
float nx = 2.0f * ((float)x) / ((float)_width) - 1.0f;
float ny = 1.0f - 2.0f * ((float)y) / ((float)_height);
Matrix4 unview = Matrix4.Invert(Matrix4.Mult(_projectionMatrix, _modelviewMatrix));
Vector4 nearPoint = Vector4.Transform(new Vector4(nx, ny, 0, 1), unview);
_pickTo = nearPoint - _pickFrom;
}
_pickFrom 是相机在场景中的位置。_pickTo 是pickray 的方向。_width 和 _height 是渲染上下文的大小。
我现在将如何实现一个函数,让我知道一个点到pickray的距离?