- PVSM.RU - https://www.pvsm.ru -

3D на рабочий стол Windows (+исходники)

3D модели на рабочем столеС Рождеством дорогие читатели!

Хочу бескорыстно поделиться своим скромным проектом [1].

Основные возможности:

  • вывод 3D графики (модели, сцены) на рабочий стол Windows;
  • переход в скринсейвер и обратно;
  • импорт моделей;
  • установка последнего 3D кадра картинкой рабочего стола;

Предыстория

Проект закончил еще в сентябре 2011 года, когда был готов официальный сайт [2], с тех пор я не вспоминал и не занимался проектом вовсе.
Предпосылки для создания было две: то, что это возможно и то, что это что-то удивительное, я имею в виду покрытие десктопа живой 3D картинкой, меня поначалу это завораживало, да и есть где фантазии разгуляться. Конечно, способов анимировать десктоп и сейчас хватает, но решений подобно моему я не встречал.

Принцип действия

Если описать весь процесс, то все довольно просто:

  • получение главного окна системы (самое нижнее окно в иерархии окон рабочего стола);
  • инициализация и вывод 3D графики на главном окне;
  • установка прозрачности слоев находящихся над главным окном;
  • и установка хуков на действия пользователя над рабочим столом.

Кусочек кода

hP = FindWindow(L"ProgMan", NULL);	
hD = GetDesktopWindow();
if (!SUCCEEDED(InitD3D(hD))) { FatalError( L"Can't init Direct3D" ); ExitProcess(NULL);}
SetWindowLong(hP,GWL_EXSTYLE, GetWindowLong(hP,GWL_EXSTYLE) | WS_EX_LAYERED );
UAC_hook = SetWinEventHook( EVENT_SYSTEM_DESKTOPSWITCH, EVENT_SYSTEM_DESKTOPSWITCH, NULL, WinEventCallback, 0, 0, WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNTHREAD);

Кстати, исходный код представлен в довольно необычной форме, более 3000 строк кода и все одном файле, связано это с первым опытом C++ и DirectX.

Недостатки

Единственным недостатком, из-за которого решение нельзя было бы назвать правильным, является именно вывод 3D графики на рабочем столе главном окне, которое под это в принципе не предназначено.

Хотелось бы предупредить, что программа потребляет неодинаковое количество ресурсов на разных компьютерах и операционных системах, т.е. может использовать <1% CPU на одном компьютере и >40% на другом, примерно такой же комплектации (лучшая производительность на Windows XP). Используйте спящий режим — двойной щелчок на иконке в трее.

Применение

3D модели на рабочем столе
Помимо рендера обоев с разных ракурсов 3D модели, пускай даже с фотографиями родных или календариком (да да, тем самым календариком который нам подарил [3] на новый год дорогой anatoly_rr [4]), можно постараться найти несколько полезных применений подобному решению, таких как:

  • вывод информации второстепенной важности, будь то: система мониторинга дома или движения грузовиков на карте;
  • вывод фирменной эмблемы в 3D на экранах в офисе или магазине.

Импорт моделей

Все, включая модели, делал в одиночку и конечно не всем они могут быть по душе, понимаю.
3D на рабочий стол Windows (+исходники) Импорт собственной модели не составит особого труда, особенно если Вы владеете 3D редактором, вчера специально создал небольшой мануал (англ.) [5] по импорту 3D модели из 3Ds Max, так же имеется видео на youtube [6]. Существует несколько нюансов, ведь, как вы наверное догадались, тени отрисовываются не налету, а экспорт же происходит в старый добрый *.X файл [7]. Если у Вас будут обои, сбрасывайте, я их разшарю в специальном разделе [6]. Спасибо за внимание!

Ссылки

Сайт проекта: michael.verhov.com/project/full3dwallpaper [8]
Официальный: full3dwallpaper.com [9]
GitHub: github.com/verhov/full3dwallpaper [10]
Видео немножко: www.youtube.com/watch?v=zkVRyfxRGn0 [11]

Автор: verhov

Источник [12]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/windows/24236

Ссылки в тексте:

[1] скромным проектом: http://michael.verhov.com/Project/full3dwallpaper

[2] официальный сайт: http://full3dwallpaper.com/

[3] подарил: http://habrahabr.ru/post/164419/

[4] anatoly_rr: http://habrahabr.ru/users/anatoly_rr/

[5] небольшой мануал (англ.): http://michael.verhov.com/Project/how_to_create_3D_wallpaper

[6] youtube: http://full3dwallpaper.com/?wallpapers.html

[7] *.X файл: http://ru.wikipedia.org/wiki/X_(%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2)

[8] michael.verhov.com/project/full3dwallpaper: http://michael.verhov.com/project/full3dwallpaper

[9] full3dwallpaper.com: http://full3dwallpaper.com

[10] github.com/verhov/full3dwallpaper: https://github.com/verhov/full3dwallpaper

[11] www.youtube.com/watch?v=zkVRyfxRGn0: http://www.youtube.com/watch?v=zkVRyfxRGn0

[12] Источник: http://habrahabr.ru/post/165007/