#directx #direct3d
#directx #direct3d
Вопрос:
в принципе, я хочу выбрать объект с помощью щелчка мыши в direct3d (управляемый directx) C #. Мне нужно преобразовать 2D-точку в 3D-точку. После поиска в Google я обнаружил, что могу использовать выбор или луч. вот пример использования луча http://msdn.microsoft.com/en-us/library/bb203905.aspx
моя проблема, если я реализую ray, заключается в том, что я не могу найти GraphicsDevice.Окно просмотра.Отменить проектирование в direct3d. Если есть другое решение, пожалуйста, скажите мне.
Обновить:
вот что я сделал:
protected override void OnMouseClick(MouseEventArgs e)
{
base.OnMouseClick(e);
int x = e.X;
int y = e.Y;
Vector3 nearsource = new Vector3((float)x, (float)y, 0f);
Vector3 farsource = new Vector3((float)x, (float)y, 1f);
nearsource.Unproject(device.Viewport, device.Transform.Projection, device.Transform.View,device.Transform.World);
farsource.Unproject(device.Viewport, device.Transform.Projection, device.Transform.View, device.Transform.World);
Vector3 direction=nearsource-farsource;
direction.Normalize();
}
Проблема в том, что матрица farsouce имеет значение NaN
Ответ №1:
Управляемый DirectX устарел в течение долгого, долгого времени. Я бы предложил использовать более поддерживаемый API, такой как SlimDX.
Небольшой поиск в Google выявил этот поток, который, похоже, является тем, что вы хотите в SlimDX.