2011-01-20 2 views
2

В настоящее время я работаю над приложением, где мне нужно сделать некоторую визуализацию, а самая сложная вещь, которую я буду делать, - показать объекты, похожие на объекты.Простая 3D-графика в C#

Все, что находится за пределами этого, является полным излишеством для моих целей, поскольку я не буду делать ничего, кроме чертежных объектов.

Это, как говорится, было бы самым простым решением для моих нужд?

+0

Вы занимаетесь графикой или графикой? –

+0

@ Даниэль: Я тоже не делаю 3D-визуализации системы частиц. –

+1

WPF ___________ –

ответ

4

Самый простой, вероятно, использовать WPF 3D. Это графическая система с сохраненным режимом, поэтому, если у вас нет огромных потребностей (т. Е. Специальных шейдеров для эффектов и т. Д.), Ее очень легко настроить и использовать напрямую.

В противном случае может потребоваться более сложная 3D-система, такая как XNA. Это будет больше работы по настройке, но даст вам больше контроля.

+0

Насколько легко было бы просто настроить кучу точек? У меня не будет никаких потребностей за пределами простого рисования кучей точек на экране. –

+0

@Sagekilla: WPF 3D не делает «точек» - так что вам придется делать кучу маленьких ящиков/сфер/и т. Д. Но, делая это ОЧЕНЬ легко ... вы настраиваете его, и просто поместите его повсюду. См. Http://stackoverflow.com/questions/1257964/join-two-spheres-with-a-cylinder-in-wpf-3d –

1

Должны ли они отображаться как истинные точки или сферы? (где вы видите «точки», которые ближе, используя видимый размер сферы как ссылку.) В первом случае я бы рекомендовал просто умножать соответствующие матрицы преобразования самостоятельно, чтобы проецировать точки на вашу плоскость просмотра, а не использовать полномасштабный 3D-движок (поскольку вы не визуализируете какие-либо треугольники или выполняете освещение/затенение)

Для некоторых теоретических основ 3D-проекции на двумерную плоскость см. this Wiki article. Если вы используете XNA, у него есть вспомогательные функции Matrix, которые генерируют для вас соответствующие матрицы преобразования, даже если вы не используете их для какого-либо реального рендеринга. Проблема становится очень тривиальной для точек, так как нет нормалей для рассмотрения. Вы просто умножаете сконфигурированную матрицу View Projection на каждую точку, зажимаете любые точки, которые лежат вне обзора (т. Е. За плоскостью просмотра, слишком далеко или вне диапазона 2d вашего окна просмотра) и отображают точки в X, Y. В расчете вы даете обратную связь о том, насколько «глубоко» каждая точка относится к вашей плоскости просмотра, поэтому вы можете использовать ее для масштабирования или окраски точек соответствующим образом, так как в противном случае очень сложно быстро понять 3D-размещение точек.

Смежные вопросы