18 Окт 2019 - 03:29:20
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
   Начало   Поиск Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: Водная поверхность в трехмерных приложениях (на DirectX и C++)
Robot

Сообщений: 653


Робот УралДев
Просмотр профиля
« : 01 Мар 2008 - 20:14:05 »

Водная поверхность в трехмерных приложениях (на DirectX и C++)
Артём Мерец "Scart"
Реализация водной поверхности в 3D приложениях с освещением, волнами и
отражением от объекта на C++ и DirectX.


http://www.uraldev.ru/articles/id/21
« Последнее редактирование: 26 Сен 2009 - 13:00:29 от Albert » Записан
alex f
Юзеры

Сообщений: 2


Просмотр профиля E-mail
« Ответ #1 : 07 Апр 2008 - 02:46:45 »

Цитата: Робот
Водная поверхность в трехмерных приложениях (на DirectX и C++)
Мерец Артем "Scart"
Реализация водной поверхности в 3D приложениях с освещением, волнами и
отражением от объекта на C++ и DirectX.


http://www.uraldev.ru/articles/index.php?id=21
Хотелось бы сказать по данному примеру пару слов. Сразу отмечу, что кодингом под DX9 начал заниматься недавно. В общем, исходник не компилится. Выдает ошибку при загрузке эффекта. Да, и еще-- в  Direct-е я не нашел механизма реализации "BeginPass() и EndPass()". Подскажите, плиииз, в чем дело? Очень уж хочется взять пример за основу в написании задуманной мною игры.
Записан
Scart

Сообщений: 226


< Артем
Просмотр профиля WWW
« Ответ #2 : 11 Апр 2008 - 14:08:04 »

Загрузка эффекта не относится к компиляции, поэтому хотельось бы уточнить - действительно исходник не компилится?
Ошибку, естественно, надо было показать (желательно скрином), ибо у меня пример отлично работает без всяких ошибок.
Вся работа с эффектами в отдельном header'е (EffectClass.h). Реализация BeginPass и EndPass у меня быть не должно, ибо это функция не моя, а microsoft'цев (в файле d3dx9effect.h). Сюдя потому, что тебя беспокоит это и невозможность компиляции эффекта, рискну предположить, что DXSDK у тебя не установлен или старая версия стоит.
Записан

Все приходит с опытом...
alex f
Юзеры

Сообщений: 2


Просмотр профиля E-mail
« Ответ #3 : 12 Апр 2008 - 03:13:54 »

Откомпилить проект всетаки удалось. Но при запуске приложения вылетает следуюющая ошибка: "EFFECT_Water.fx(86): error X3000: syntax error: unexpected token ';' ". Ошибку, по видимому, возвращает процедура D3DXCreateEffectFromFile в pBufferError, тоесть при инициализации файла эффекта. Естественно, дальнейшая работа с эффектом просто невозможна.
DX SDK у меня под DirectX 9 от 2002г. , но D3DXCreateEffectFromFile там есть, да и компилю на Visual C++ 2008.   НепонимающийНепонимающийНепонимающийНепонимающийНепонимающийНепонимающийНепонимающий??
Записан
Scart

Сообщений: 226


< Артем
Просмотр профиля WWW
« Ответ #4 : 19 Апр 2008 - 14:01:05 »

На самом деле SDK от 2002 года уже, мягко говоря, старовато. Я только что еще раз запустил и скомпилировал проект - все гладко. Более того, на всякий случай, скачал пример, которые на сайте (быть может отправил сюда не ту версию), но нет - все также отлично работает.
Советую просто скачать SDK посвяжее (и еще, я компилировал в 2003 студии, но это, думаю, не имеет никакого отношения к проблеме). Если нет возможности скачать SDK целиком, то хотябы заголовочные файлы и библиотеки.
Записан

Все приходит с опытом...
keYMax
Юзеры

Сообщений: 682



Просмотр профиля WWW
« Ответ #5 : 21 Апр 2008 - 23:21:28 »

[!--quoteo--][div class=\'quotetop\']Цита
Записан
Mikle
Юзеры

Сообщений: 148


< Михаил
Просмотр профиля E-mail
« Ответ #6 : 22 Апр 2008 - 19:32:52 »

Я так понял, EXEшник в статье не финальный, а первой стадии? Или где там преломления?
Просто у меня нет Визуал студии, не могу сам скомпилировать.
Еще создается впечатление, что программа неоправданно тормозит, к сожалению нет счетчика FPS. Железо - Athlon64 3000, GF6600 GT. Или, возможно, это из-за некорректной обработки ввода (мыши).
Не понял, там есть зависимость коэффициентов отражения и преломления от угла зрения?
Хотелось бы посмотреть не работу кода, описанного в статье, чтобы было видно дно, а так же предметы, частично погруженные в воду.
Я сам хотел принять участие в конкурсе, но, что-то, так и не собрался. Вот демка:
http://tuapse-mikle.narod.ru/WaterDemo.rar
1 мб.
Тут есть и отражения, и преломления, и, главное, коэффициенты зависят от угла зрения.
Управление стандартное, "I" - инверсия мыши, "Home"\"End" - регулировка волнения.
В Висте не пойдет без dx8vb.dll из состава DirectX8.
« Последнее редактирование: 22 Апр 2008 - 22:32:46 от Mikle » Записан
Elec3C
Юзеры

Сообщений: 1


Просмотр профиля
« Ответ #7 : 26 Июн 2008 - 20:41:50 »

Есть трабл: при повороте вдоль оси z, отражение начинает пемещаться.
Нужно исправлять здесь (Water.h->CWATER::PreRenderForReflection(Camera *Cam)):

...
D3DXVECTOR3 CamPos = Cam->GetCamPos();
D3DXVECTOR3 ViewPos = Cam->GetViewPos();

Cam->GetViewMat(&oldMatView);
D3DXVECTOR3 h = CamPos;
float tmp = CamPos.y-ObjPos.y;
h.y = CamPos.y - 2*tmp;
D3DXVECTOR3 hv = ViewPos;
float tmpv = ViewPos.y-ObjPos.y;
hv.y = ViewPos.y - 2*tmpv;

D3DXMATRIX MatrixView;
D3DXMatrixLookAtLH(&MatrixView,&h,&hv, &D3DXVECTOR3(0.0f, 1.0f, 0.0f));
...
Записан
Scart

Сообщений: 226


< Артем
Просмотр профиля WWW
« Ответ #8 : 23 Сен 2009 - 14:37:55 »

Так как меня уже третий человек просит скинуть заголовочные файлы от sdk, под котором писалась демо-сцена - покажу ссылку на них тут.

P.S. Насчет самой демки, у меня много различных демо-сцен с водной поверхностью, так как в свое время очень плотно этим занимался, но, к сожалению, демки с такой сценой не нашел, виною тому срок времени, прошедшего с того времени... Если есть конкретные вопросы - с радостью помогу, лучше через мыло или лс. А сейчас я занят несколько другой областью, хотя, по прежнему, связанной с приложениям, моделирующими виртуальную реальность, но теперь скорее со взаимодействием оной с человеком, так сказать, работаем над интерактивностью. Взаимодействием человека в реальности с виртуальным миром по средствам двух видео камер)
Записан

Все приходит с опытом...
Страниц: [1]
  Печать  
 
Перейти в: