DanielSky
Хорошо, спасибо за ответы, пока всё)
Что-то не могу разобраться, как Widget'y навесить Controller.
Задача такая - есть элемент GUI, наследуется от Widget. Нужно перемещать его по экрану как функция от времени. Написал свой велосипед, в который нужно каждый кадр передавать dT, однако это не совсем правильно, когда движок предоставляет контроллеры. Но их что, только на ноды WorldMgr'a навесить можно?
Похоже, для виджетов существуют Mutator'ы. Интересно, я прав?
Саша123
> Интересно, я прав?
Да.
Контроллеры - они для 3Д.
Мутаторы - они для 2Д.
DeadMeat
Запилил мутатор, только вот что-то в Move() не заходит. Сделал по типу стандартного ScrollMutator (кода нету сейчас под рукой, к сожалению), переопределил все виртуальные методы, frend MutatorReg для private MyMutator(), всё как положено.
Делаю в глобальной области static MutatorReg<MyMutator>(.....), потом в конструкторе виджета
MyMutator *mutator = new MyMutator();
AddMutator(mutator);
Вроде всё, но что-то упустил, в Move() не заходит. Подозреваю, состояние какое-то надо выставить, но сколько ни лазил, ничего не нашёл.
Я мутаторы сам не юзал, но вроде что бы оно заработало, надо что бы Move() у самого виджета вызывался. А для этого его надо добавить не как AddWidget(), а как AddMovingWidget().
Мой косяк был, похоже - я пытался не Widget двигать, а Panel. Хотя Panel наследуется от Widget, и у ней есть AddMutator, на ней не работает.
Сейчас, кажись, заработало, только смущает, что работает и без MutatorReg - наверное, где-то опять же косяк.
С AddMovingWidget() ничего не лолучилось, да и в документации на это намёков нет.
Что-то дружелюбное иностранное сообщество не спешит на помощь новичку, спрошу тут. Уже был похожий вопрос, но, вроде, не ответили - http://www.gamedev.ru/community/c4engine/forum/?id=176035#m7 Какая-то бяка с тенями. Чем может быть вызвано?
Геометрию создаю вручную.
Вот здесь на видео более наглядно : http://my-files.ru/l4eu7f (жать вторую строчку сверху)
Блиииин, ну что ж мне такое за наказание? То никого в течение 10 лет не смущает горящая на вебке камера, когда микрофон не используется.
Сейчас вот разработчик при первом взгляде на скриншот вообще проблем не увидел, а теперь говорит, что с теми мелкими погрешностями, что есть, придётся мириться.
Кто программировал графику, это действительно сложно добиться нормальной границы тени в таких трудных местах? Я слишком дотошный? Но на видео в динамике совсем некрасиво получается. Это норма вообще и решается всякими обходными путями типа грамотной подгонки геометрии и текстур и освещения уровня?
Возможно ли, что проблема в неправильных нормалях, как вы считаете? :
Саша123
Shadow acne судя по всему. Вряд-ли получиться так просто починить.
Попробуй другой тип лайта сделать.
bazhenovc
> Shadow acne судя по всему. Вряд-ли получиться так просто починить.
Да ты понимаешь, даже разработчик ничего не сказал. "Тебе придётся с этим жить". Ха. Нормально, да?))))))))))))
Он сказал, что дело не в нормалях, и нормали на расчёт тени не влияют, но если рассчитать их таким образом, что вывод геометрии со сглаживанием получится (чёрт, как это правильно описать), ведь вид тени другой будет, вот:
Не очень удачный скрин, но видно, что артефакты есть, и нормали рассчитаны так, что от совпадающих вершин сливаются. И тень другая, посреди вершины идёт. Так как же "Normals do not have any affect on shadows" ?
> Попробуй другой тип лайта сделать.
Да, попробую, но не прямо сейчас, есть понасущней задачи, спасибо, потом отпишусь.
А что значит "Shadow acne"? Я плохо шарю.
Саша123
http://www.digitalrune.com/Support/Blog/tabid/719/EntryId/218/Shadow-Acne.aspx
Наверное можно настроить биас для тени, но это надо в движок лезть.
" limited resolution of the shadow map"
Спасибо за наводку. Предварительно можно предположить, что при каких-то определённых условиях размер (разрешение) shadow map становится недостаточен. Уже что-то. Можно попробовать изменить условия. Как ты и предлагал, самое простое для начала тип света изменить. Или поиграться с расстоянием до источника и его интенсивностью и посмотреть на результат.
И всё-таки, похоже, дело в нормалях. При не рассчитанных нормалях точечный источник превращается в направленный на малых высотах на моём уровне, когда он ниже гор. Нормаль практически параллельна плоскости, на которую должен падать свет под углом 90 градусов в этом случае. Также плоскости с неправильными нормалями дают сильную ступеньку на тени.
Завтра попробую посчитать нормали для каждой плоскости.
При рассчитанных, кстати, тоже неправильно тень рисуется, и артефакты есть, но они гораздо меньше, да и как их быть не может, если разница 45 градусов между плоскостью и "нормалью" к ней.
Вот, на форуме подсказали, что нормали не действуют на тени, но действуют на shading.
Странно это всё.
Я в шоке.
Короче, вопрос решён.
Видимо, все привыкли работать с моделями из редактора, поэтому как-то и не сообразили, что в собранной вручную модели куба из каждой вершины должны выходить три нормали.
А мне-то, нубу, откуда знать разницу между тенью и затенением, лол.
Всем спасибо.
Тема в архиве.