Posts Tagged ‘3D’

Silverlight & 3D

by Pavel on Wednesday, December 10th, 2008

Некоторое время назад мне понадобилась возможность представить простейшие трехмерные обьекты онлайн. Все бы ничего, если бы не условие – все должно быть реализовано на Silverlight.
К сожалению, на данный момент, в Silverlight, в отличии от WPF, полностью отсутствует поддержка 3D. Начиная от математического „аппарата“ и до представления обьектов, сцены. В следующей версии нам обещают „…major graphics improvements (including 3D support and GPU hardware acceleration)… “ но пока, увы.

В интернете можно встретить довольно много вопросов и обсуждений этой темы. Так же существует несколько проектов, которые в той или иной мере пытаются „выйти“ в третье измерение :) Среди известных мне можно выделить Kit3D, Balder. Но загрузив нужные мне модели в эти проекты, они были довольно быстро отсеяны. После непродолжительных поисков стало ясно, что альтернатив в общем то больше не существует. Поэтому было принято решение изобрести велосипед заново.

Результаты этой работы я и хочу продемонстрировать. Приложение является чисто софтварным рендером. Были использованы простейшие модели освещения и построения сцены. Такие «тяжелые» операции как расчет теней или bump поверхностей отсутствуют по вполне понятным причинам.

Обьяснять GUI демонстрационного приложения , наверно, не нужно. Единственное на что я хочу обратить внимание – отрендеренная 3D сцена при отображении всегда растягивается на канвас 600×600. Сам же размер 3D сцены можно менять с помощью 3 radiobuttons („300×300“, „450×450“, „600×600“). Т.е. чем больше 3D сцена, тем больше пикселей надо растеризовать, тем четче изображение, и тем медленнее все.
Онлайн приложение можно посмотреть < тут >. Для просмотра необходимо наличие Silverlight 2.0
Пользуясь случаем, хочу поблагодарить комьюнити www.rsdn.ru и в особенности minorlogic за оказанную помощь в оптимизации приложения.