Библиотека для создания сетки в .Net? - PullRequest
6 голосов
/ 04 февраля 2011

Существует ли какая-либо библиотека (.dll) , доступная в .Net или доступная как сторонняя библиотека.

, которая обеспечивает следующие функции?

Мы просто добавляем в качестве входных данных облако точек или Точки в трехмерном пространстве X , Y и Z Координация)

И это отображение 3D-объект в ViewPort3D .Средство автоматически генерирует MESH из Point Cloud и выдает нам результат в виде 3D-объекта in ViewPort3D .

Примечание: Рассмотрим объект, который будет выпуклым.

Спасибо ..........

1 Ответ

5 голосов
/ 04 февраля 2011

Мне недавно стало интересно то же самое, и я пришел к выводу, что OpenTK прост в использовании для этого. Я думаю, что он дает более или менее прямой доступ к API OpenGL и не требует множества зависимостей.

Это немного copy'n'paste из моего собственного вопроса и ответа , что является результатом того, что я протестировал много разных библиотек за последние несколько дней с целью сделать точку Облако на основе данных, которые я получаю от моего Kinect.

Он не обеспечивает вывод в ViewPort3D, но из моих тестов это было намного быстрее, чем при использовании WPF. Мне не удалось отобразить (и постоянно обновлять) облако точек 640x480 в WPF с приемлемой скоростью.

Это сравнительно легко понять. Для начала требуется несколько (и понятных) строк кода. Он не хранит объекты для меня, поэтому я могу что-то менять для каждого прохода, и это здорово, потому что я в основном работаю с небезопасными указателями на память.

Конечно, сложно сочетать скорость с простотой использования. Скорость требует непосредственного общения с 3D API, а простота использования требует абстракции. Поэтому это должно считаться API более низкого уровня, чем некоторые другие, которые я пробовал. Если бы я хотел сделать заранее подготовленную анимацию персонажей, то XNA, вероятно, был бы лучшим выбором, но для облаков точек это пока выглядит очень многообещающе (4-5 часов взлома).

Пример кода:

private void Render()
{
   // Every frame
   GL.Begin(BeginMode.Points);
   GL.MatrixMode(MatrixMode.Modelview);
   GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
   GL.LoadMatrix(ref cameraMatrix);

   GL.Begin(BeginMode.Points);

   // Here I can add lots of points. I add 200k without any big problem.
   // It seems these points could have been passed in as an array pointer too,
   //  but I'll look at that later.
   GL.Vertex3(x2, y2, z2);

   GL.End();
   glControl.SwapBuffers();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...