forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Mesh и нормали (освещение) (http://forum.boolean.name/showthread.php?t=13240)

fadalist 28.08.2010 12:00

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 в разныйх версиях отличается.

.Squid 28.08.2010 16:34

Ответ: Mesh и нормали (освещение)
 
Лучше один раз увидеть, чем сто раз услышать. Реквестирую семпл.

fadalist 29.08.2010 10:42

Ответ: 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

скриншот во вложении

fadalist 02.09.2010 18:30

Ответ: Mesh и нормали (освещение)
 
Никто не знает ответа, либо я не ответил на предыдущий пост.
Реквестирую семпл - что значит? :dontknow:
Семпл это пример, в каком виде лучше, скриншоты или exe или исходники?

.Squid 02.09.2010 19:29

Ответ: Mesh и нормали (освещение)
 
Исходник и вся медия, чтобы можно было запустить и поглядеть.

Arles 03.09.2010 09:51

Ответ: Mesh и нормали (освещение)
 
Попробуй экспортировать в *.b3d

pax 03.09.2010 13:58

Ответ: Mesh и нормали (освещение)
 
источник света типа "точечный" (Point) стоит в центре сцены (и наверное в центре куба), попробуйте его сдвинуть или использовать направленный...
UPD: хотя нет ошибся, но все правильно. Точечный источник для каждого полигона имеет свой угол наклона. Так что различие в цвете полигонов объясняется этим. Сделайте попиксельное освещение и все у вас будет нормально.

.Squid 03.09.2010 15:07

Ответ: Mesh и нормали (освещение)
 
Хм. Скорее всего в кубе задействовано 8 вершин. Должно быть 24 - у сторон куба не должно быть общих вершин.

pax 03.09.2010 15:21

Ответ: Mesh и нормали (освещение)
 
Да не это все из за точечного источника света. Если его отдалить на более высокое расстояние, то будет менее заметна разница между цветами треугольников. Как я понял - в режиме FlatShaded освещение для полигона рассчитывается используя одно направление точечного источника света. Для другого полигона той же грани куба угол между направлением источника света и нормалью уже будет другой. Из -за этого и различие в освещенности треугольников одной и той же грани. От этого эффекта избавит направленный источник света или выключение режима FlatShaded.

fadalist 16.09.2010 15:33

Ответ: 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))

Пример, медия и откомпилированная версия во вложении.
Спасибо за участие.

.Squid 16.09.2010 15:48

Ответ: Mesh и нормали (освещение)
 
Постараюсь не забыть глянуть. Если что, то напомни через неделю, а то могу забыть - сейчас куча всего навалилась.


Часовой пояс GMT +4, время: 07:05.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot