|
Xors3D Графический движок с поддержкой DirectX9 |
28.08.2010, 12:00
|
#1
|
AnyKey`щик
Регистрация: 07.10.2009
Сообщений: 13
Написано одно полезное сообщение
|
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 в разныйх версиях отличается.
|
(Offline)
|
|
28.08.2010, 16:34
|
#2
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Mesh и нормали (освещение)
Лучше один раз увидеть, чем сто раз услышать. Реквестирую семпл.
__________________
|
(Offline)
|
|
29.08.2010, 10:42
|
#3
|
AnyKey`щик
Регистрация: 07.10.2009
Сообщений: 13
Написано одно полезное сообщение
|
Ответ: Mesh и нормали (освещение)
Вот код прграммы.
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
скриншот во вложении
|
(Offline)
|
|
02.09.2010, 18:30
|
#4
|
AnyKey`щик
Регистрация: 07.10.2009
Сообщений: 13
Написано одно полезное сообщение
|
Ответ: Mesh и нормали (освещение)
Никто не знает ответа, либо я не ответил на предыдущий пост.
Реквестирую семпл - что значит?
Семпл это пример, в каком виде лучше, скриншоты или exe или исходники?
|
(Offline)
|
|
02.09.2010, 19:29
|
#5
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Mesh и нормали (освещение)
Исходник и вся медия, чтобы можно было запустить и поглядеть.
__________________
|
(Offline)
|
|
03.09.2010, 09:51
|
#6
|
ПроЭктировщик
Регистрация: 24.07.2009
Сообщений: 142
Написано 52 полезных сообщений (для 103 пользователей)
|
Ответ: Mesh и нормали (освещение)
Попробуй экспортировать в *.b3d
|
(Offline)
|
|
03.09.2010, 13:58
|
#7
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Mesh и нормали (освещение)
источник света типа "точечный" (Point) стоит в центре сцены (и наверное в центре куба), попробуйте его сдвинуть или использовать направленный...
UPD: хотя нет ошибся, но все правильно. Точечный источник для каждого полигона имеет свой угол наклона. Так что различие в цвете полигонов объясняется этим. Сделайте попиксельное освещение и все у вас будет нормально.
|
(Offline)
|
|
03.09.2010, 15:07
|
#8
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Mesh и нормали (освещение)
Хм. Скорее всего в кубе задействовано 8 вершин. Должно быть 24 - у сторон куба не должно быть общих вершин.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
03.09.2010, 15:21
|
#9
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Mesh и нормали (освещение)
Да не это все из за точечного источника света. Если его отдалить на более высокое расстояние, то будет менее заметна разница между цветами треугольников. Как я понял - в режиме FlatShaded освещение для полигона рассчитывается используя одно направление точечного источника света. Для другого полигона той же грани куба угол между направлением источника света и нормалью уже будет другой. Из -за этого и различие в освещенности треугольников одной и той же грани. От этого эффекта избавит направленный источник света или выключение режима FlatShaded.
|
(Offline)
|
|
16.09.2010, 15:33
|
#10
|
AnyKey`щик
Регистрация: 07.10.2009
Сообщений: 13
Написано одно полезное сообщение
|
Ответ: Mesh и нормали (освещение)
Здравствуйте, давно не появлялся, бук поломался
я не смог найти рабочего плагина экспорта в *.b3d для 3dMax9-64 (если кто поделится буду очень благодарен)
По поводу источников света pax прав, если точечный отдалить то разница менее заметна. (не вооруженным глазом вообще не заметна
Тип источника LIGHT_DIRECTIONAL работает правильно, я так понял его хоть отдаляй хоть нет.
Проблемы начинаются когда используется совместно две эти команды:
xEntityFX(cub, 4); FX_FLATSHEDED
xEntitySpecularColor(cub24, 255,255,255)
интересно в чем проблема?
Количество вершин в кубе я так понял не влияет. Кол-во вершин можно посмотреть в текстовом формате *.x Что характерно после загрузки модели с 8 вершинами, меш состоит из 24 вершин. Проверял такой коммандой:
DebugLog xCountVertices(xGetSurface(ent,0))
Пример, медия и откомпилированная версия во вложении.
Спасибо за участие.
|
(Offline)
|
|
16.09.2010, 15:48
|
#11
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Mesh и нормали (освещение)
Постараюсь не забыть глянуть. Если что, то напомни через неделю, а то могу забыть - сейчас куча всего навалилась.
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:44.
|