Mesh и нормали (освещение)
Здравствуйте. У меня такой вопрос. Насколько я знаю освещение зависит от нормалей. Создаю в 3DMax обычный BOX (или любую другую модель), экспортирую в формат *.3ds или в *.x затем загружаю в ксорс.
cub = xLoadMesh("cub.3ds") xEntityFX(cub, 4); FX_FLATSHEDED xEntityColor(cub,150,150,150) xEntitySpecularColor(cub, 250,250,250) В ксорсе на одном полигоне по разному освещаются фэйсы. Другими словами, на одной стороне куба я вижу 2 треугольника. Нормали в 3DMax проверял, заданы правильно. При импорте модели к примеру в "Deep Exploration" (программка для конвертирования в различные 3д форматы) выглядит всё правильно. xUpdateN(cub) xUpdateNormals(cub) xUpdateTB(cub) проблему не решают, что я делаю не правильно? p.s : константа FX_FLATSHEDED и FX_FLATSHADED в разныйх версиях отличается. |
Ответ: Mesh и нормали (освещение)
Лучше один раз увидеть, чем сто раз услышать. Реквестирую семпл.
|
Ответ: Mesh и нормали (освещение)
Вложений: 2
Вот код прграммы.
Include "xors3d.bb" xGraphics3D 800, 600, 32, 0, 1 cam = xCreateCamera() xCameraRange cam, 0.9, 1000 xPositionEntity cam, 0, 0, 0 Light = xCreateLight(2) ent = xLoadMesh("cub.x") xEntityFX(ent, 4); FX_FLATSHEDED xEntitySpecularColor(ent, 255,255,255) xEntityColor(ent, 50, 50, 50) xPositionEntity(ent,0,0,3) While Not xKeyDown(KEY_ESCAPE) Or xWinMessage("WM_CLOSE") xTurnEntity(ent,0.5,0.3,0.1) xRenderWorld() xFlip() Wend End скриншот во вложении |
Ответ: Mesh и нормали (освещение)
Никто не знает ответа, либо я не ответил на предыдущий пост.
Реквестирую семпл - что значит? :dontknow: Семпл это пример, в каком виде лучше, скриншоты или exe или исходники? |
Ответ: Mesh и нормали (освещение)
Исходник и вся медия, чтобы можно было запустить и поглядеть.
|
Ответ: Mesh и нормали (освещение)
Попробуй экспортировать в *.b3d
|
Ответ: Mesh и нормали (освещение)
источник света типа "точечный" (Point) стоит в центре сцены (и наверное в центре куба), попробуйте его сдвинуть или использовать направленный...
UPD: хотя нет ошибся, но все правильно. Точечный источник для каждого полигона имеет свой угол наклона. Так что различие в цвете полигонов объясняется этим. Сделайте попиксельное освещение и все у вас будет нормально. |
Ответ: Mesh и нормали (освещение)
Хм. Скорее всего в кубе задействовано 8 вершин. Должно быть 24 - у сторон куба не должно быть общих вершин.
|
Ответ: Mesh и нормали (освещение)
Да не это все из за точечного источника света. Если его отдалить на более высокое расстояние, то будет менее заметна разница между цветами треугольников. Как я понял - в режиме FlatShaded освещение для полигона рассчитывается используя одно направление точечного источника света. Для другого полигона той же грани куба угол между направлением источника света и нормалью уже будет другой. Из -за этого и различие в освещенности треугольников одной и той же грани. От этого эффекта избавит направленный источник света или выключение режима FlatShaded.
|
Ответ: Mesh и нормали (освещение)
Вложений: 1
Здравствуйте, давно не появлялся, бук поломался :(
я не смог найти рабочего плагина экспорта в *.b3d для 3dMax9-64 (если кто поделится буду очень благодарен) По поводу источников света pax прав, если точечный отдалить то разница менее заметна. (не вооруженным глазом вообще не заметна :) Тип источника LIGHT_DIRECTIONAL работает правильно, я так понял его хоть отдаляй хоть нет. Проблемы начинаются когда используется совместно две эти команды: xEntityFX(cub, 4); FX_FLATSHEDED xEntitySpecularColor(cub24, 255,255,255) интересно в чем проблема? Количество вершин в кубе я так понял не влияет. Кол-во вершин можно посмотреть в текстовом формате *.x Что характерно после загрузки модели с 8 вершинами, меш состоит из 24 вершин. Проверял такой коммандой: DebugLog xCountVertices(xGetSurface(ent,0)) Пример, медия и откомпилированная версия во вложении. Спасибо за участие. |
Ответ: Mesh и нормали (освещение)
Постараюсь не забыть глянуть. Если что, то напомни через неделю, а то могу забыть - сейчас куча всего навалилась.
|
Часовой пояс GMT +4, время: 07:05. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot