Что делает программист старой закалки когда встречается с новым движком? Первым делом засовывает в него уровень из Quake :)
Пока работа дошла до стадии конвертации BSP в UMDL урхи. Надо вот только повернуть модель, вывернуть, разбивку на материалы правильно сделать.
Извините что немно, первый блин комом :)

Если есть что посоветовать по поводу того как срастить отсечение невидимых и физику с урхой - пишите. Но пока на это можно забить, треугольников не так уж много. Overdraw правда большой... Я думал забить на BSP и порезать уровень на кубики просто. Фрустум будет откидывать часть уровня, можно попробовать окклюдеры использовать тоже... Вообщем посоветуйте кто поопытнее, пожалуйста.
Про физику я так понял что можно просто модель скормить компоненту физическому и он сделает в булете статический меш из неё. Насколько быстро это будет работать?
Про материалы - это мне надо много Geometries сделать в файле? Потому что в описании формата прямых отсылок к материалам нет, там только vb, ib, геометрии и кости.
Если поможет http://www.gamedev.ru/community/urho3d/forum/?id=214086 (код не мой если чо)
> Если есть что посоветовать по поводу того как срастить отсечение невидимых и физику с урхой
урхо использует bullet, единственный вариант - для уровня использовать collision shape = triangle mesh (и тут отсечение не должно помешать) и указать ему модель уровня, а для всех других моделей (монстров, вещей) collision shape = капсулы (это если задаться целью именно bullet использовать, а не переносить физику квейка в урхо)
1vanK
Спасибо, гляну.
Из StaticModel:
/// Set material on one geometry. Return true if successful.
bool SetMaterial(unsigned index, Material* material);так что да, для модель уровня нужно делить на геометрии по материалам (эти геометрии в рантайме превращаются в батчи, поэтому тут ничего страшного нет, ведь батчи с разными текстурами так и так рендерятся отдельно)
А чтобы кучу материалов на одну модель назначить, обрати внимание на ApplyMaterialList(), которая позволяет список материалов из текстовика взять
>Про физику я так понял что можно просто модель скормить компоненту физическому и он сделает в булете статический меш из неё. Насколько быстро это будет работать?
добавил в ноду StaticModel
добавь:
+ Rigidbody (=физика + тип поведения статика vs динамика)
+ CollisionShape (=форма коллайд меша, есть упрощенные фигуры: кубики, плоскости, сферы + convex +trianglemesh)
codingmonkey
Да, работает :)

Есть ли вариант добавить объект игрока прям в редакторе и им походить? Просто чтоб по-быстрому попробовать как оно будет.
Ну если на AngelScript написать контрол управления игроком, то можно (только кнопки управления WASD будут конфликтовать с кнопками управления камерой в редакторе, так что видимо придется использовать другие кнопки или изменить кнопки в редакторе), но лучше чем бороться с всякими непредвиденными трудностями отдельно от редактора сделать
1vanK
Ок.
А что посоветуешь с лайтмапами делать и тенями? Я помню мы когда-то делали так - находили ближайшие источники света в сцене, смешивали пропорционально расстоянию и силе, получали усредненное направление на вооброжаемый источник, от которого отбрасывали тень через shadow map. Получается что когда бежишь от фоноря к фонарю тень не прыгает а плавно двигается вокруг персонажа. Можно такое в urho без боли сделать? Или хотя-бы скопипастить откуда нибудь?
А вот это хз, это получается тень рендерить отдельно от источника света. Не думаю, что получится такое сделать без глубокого погружения в недра движка. В понимании движка - тень это там куда свет от источника света не попадает (т.е. может быть свет без тени, но н е может быть тени без света), а не какой-то накладываемый эффект
Хотя вот можно в LitSoid.glsl получить тень
#ifdef SHADOW
diff *= GetShadow(vShadowPos, vWorldPos.w);
#endifТо есть если как-то источник света пометить (а для этого надо в движок лезть видимо или свой компонент на основе источника света написать), чтобы вклад в освещение от него не производился, а тень вычиталась из цвета пикселя, то мб что-то и получится.
>А что посоветуешь с лайтмапами делать и тенями?
лайтмапы(статический свет) бейкаются вне редактора
делаешь в 3д редакторе доп. разветку для всего уровня лайтмапы в UV2 (и лучше с большой заливкой краев, и отступом между частями лайтмапы сразу делать иначе потом мипмап будет показывать черные полосы, на удалении)
расставь лампочки в 3д редакторе, сделай Bake в большую текстуру.
экспортируешь обратно уровень с разверткой UV2 + запеченную текстуру в редактор
юзаешь для уровня технику DiffLightMap.xml(sEmissiveMap) или другие где фигурирует - LightMap
насколько я помню лайт мапа рисуется в амбиент проходе, т.е. до просчета теней на объектах(в амбиент проходе шадовмапа вроде не доступна), тени же это shadowTerm для пикселя когда делаются per-pixel проходы. Возможно придется вытаскивать лайтмапу в per-pixel часть шейдера, если что-то не понравится с тенями по умолчанию, но тогда будет не оптимально поскольку для каждого источника света придется читать лайтмапу.
Лайтмапы у меня прямо в bsp есть же. Вопрос в том как тень от персонажей отбрасывать на уровень с лайтмапом.
>Лайтмапы у меня прямо в bsp есть же
это как? в геометрии - VertexColor чёль?
Тема в архиве.