Люди, посоветуйте пожалуйста, как высоту камеры контролировать при ходьбе по 3d-сцене, и сделать так, чтобы сквозь стены ходить нельзя было? Чтобы попроще и поменьше ресурсов от компьютера требовало.
Сам додумался до следующего: помимо файла с геометрией сцены храню набор карт высот в картинках, которые соответствуют файлу с геометрией.
Фактически, перемещение идёт не по геометрии, а по карте высот. А геометрия используется только для отрисовки.
Такое решение очень неповоротливо при редактировании моделей, но лучшего придумать не могу.
Слушай, а почему бы тебе вместо велосипедостроения не использовать уже готовую библиотеку? [upd2]19.11.08 02:03 Автор: amirul <Serge> Статус: The Elderman Отредактировано 19.11.08 03:13 Количество правок: 2
Судя по примерам - это то, что мне нужно.
Но только скомпилировать библиотеку у меня не получается.
1. Распаковываю библиотеку (http://downloads.sourceforge.net/irrlicht/irrlicht-1.4.2.zip).
2. Запускаю файл dsw (у меня студия 6.0 установлена).
3. Получаю несколько тысяч ошибок и варнингов.
Вот небольшая вырезка:
d:\1\include\scolor.h(21) : warning C4244: 'return' : conversion from 'unsigned __int32' to 'unsigned __int16', possible loss of data
d:\1\include\scolor.h(48) : warning C4244: 'return' : conversion from 'unsigned __int32' to 'unsigned __int16', possible loss of data
d:\1\include\scolor.h(58) : warning C4244: 'return' : conversion from 'unsigned __int32' to 'unsigned __int16', possible loss of data
d:\1\include\scolor.h(67) : warning C4244: 'return' : conversion from 'unsigned __int32' to 'unsigned __int16', possible loss of data
d:\1\include\scolor.h(235) : warning C4244: '=' : conversion from 'unsigned __int32' to 'unsigned __int8', possible loss of data
d:\1\include\scolor.h(236) : warning C4244: '=' : conversion from 'unsigned __int32' to 'unsigned __int8', possible loss of data
d:\1\include\scolor.h(237) : warning C4244: '=' : conversion from 'unsigned __int32' to 'unsigned __int8', possible loss of data
d:\1\include\scolor.h(238) : warning C4244: '=' : conversion from 'unsigned __int32' to 'unsigned __int8', possible loss of data
d:\1\include\scolor.h(279) : error C2780: 'const T &__cdecl irr::core::min_(const T &,const T &,const T &)' : expects 3 arguments - 2 provided
d:\1\include\irrmath.h(80) : see declaration of 'min_'
d:\1\include\scolor.h(279) : error C2782: 'const T &__cdecl irr::core::min_(const T &,const T &)' : template parameter 'T' is ambiguous
could be 'unsigned int'
or 'unsigned __int32'
d:\1\include\scolor.h(280) : error C2780: 'const T &__cdecl irr::core::min_(const T &,const T &,const T &)' : expects 3 arguments - 2 provided
d:\1\include\irrmath.h(80) : see declaration of 'min_'
d:\1\include\scolor.h(280) : error C2782: 'const T &__cdecl irr::core::min_(const T &,const T &)' : template parameter 'T' is ambiguous
could be 'unsigned int'
or 'unsigned __int32'
d:\1\include\scolor.h(281) : error C2780: 'const T &__cdecl irr::core::min_(const T &,const T &,const T &)' : expects 3 arguments - 2 provided
d:\1\include\irrmath.h(80) : see declaration of 'min_'
d:\1\include\scolor.h(281) : error C2782: 'const T &__cdecl irr::core::min_(const T &,const T &)' : template parameter 'T' is ambiguous
could be 'unsigned int'
or 'unsigned __int32'
d:\1\include\scolor.h(282) : error C2780: 'const T &__cdecl irr::core::min_(const T &,const T &,const T &)' : expects 3 arguments - 2 provided
d:\1\include\irrmath.h(80) : see declaration of 'min_'
d:\1\include\scolor.h(282) : error C2782: 'const T &__cdecl irr::core::min_(const T &,const T &)' : template parameter 'T' is ambiguous
could be 'unsigned int'
or 'unsigned __int32'
d:\1\include\scolor.h(314) : error C2782: 'const T __cdecl irr::core::clamp(const T &,const T &,const T &)' : template parameter 'T' is ambiguous
could be 'int'
or '__int32'
d:\1\include\scolor.h(316) : error C2782: 'const T __cdecl irr::core::clamp(const T &,const T &,const T &)' : template parameter 'T' is ambiguous
could be 'int'
or '__int32'
d:\1\include\scolor.h(318) : error C2782: 'const T __cdecl irr::core::clamp(const T &,const T &,const T &)' : template parameter 'T' is ambiguous
could be 'int'
or '__int32'
d:\1\include\scolor.h(320) : error C2782: 'const T __cdecl irr::core::clamp(const T &,const T &,const T &)' : template parameter 'T' is ambiguous
could be 'int'
or '__int32'
Понимаю, что чайник, но как мне выйти из ситуации?
Взять готовую dll-ку и писать на шарпе.19.11.08 21:46 Автор: amirul <Serge> Статус: The Elderman
> 2. Запускаю файл dsw (у меня студия 6.0 установлена). Вот это ты зря. 6.0 вышла еще ДО стандартизации C++ и она в большинстве случаев НЕ компилирует нетривиальный C++ код.
2008-я компилит без единого ворнинга
Не хотелось 2008-ую ставить, но видно придётся. Спасибо.20.11.08 00:51 Автор: Vedrus <Serokhvostov Anton> Статус: Member
Еще и platform sdk, потому что в составе VS идет неполный (не хватает хедеров для d3d) [upd]20.11.08 01:11 Автор: amirul <Serge> Статус: The Elderman Отредактировано 20.11.08 01:12 Количество правок: 1