|
16.08.2012, 10:58
|
#1
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Самодельный куб из 8 вершин
Суть: блитцевый куб содержит 24 вершины, т.е. на каждую сторону 4 отдельные вершины.
Я захотел сделать куб из 8 вершин, ведь при создании треугольников можно в нескольких треугольниках использовать одни и те же вершины.
Проблема: мой куб серый, он не хочет зависеть от источника света.
Вопрос: как мне получить куб, который внешне будет такой же как блитцевый? Чтобы на покраску цветом реагировал аналогично.
Вот код создания куба:
Function fnCreateCube%()
Local mesh% = CreateMesh()
Local surf% = CreateSurface(mesh)
Local v0% = AddVertex(surf, -1,-1,-1)
Local v1% = AddVertex(surf, -1,1,-1)
Local v2% = AddVertex(surf, 1,1,-1)
Local v3% = AddVertex(surf, 1,-1,-1)
Local v4% = AddVertex(surf, 1,-1,1)
Local v5% = AddVertex(surf, 1,1,1)
Local v6% = AddVertex(surf, -1,1,1)
Local v7% = AddVertex(surf, -1,-1,1)
AddTriangle(surf, v0,v1,v2) ;front
AddTriangle(surf, v0,v2,v3)
AddTriangle(surf, v3,v2,v5) ;rigth
AddTriangle(surf, v3,v5,v4)
AddTriangle(surf, v4,v5,v6) ;back
AddTriangle(surf, v4,v6,v7)
AddTriangle(surf, v7,v6,v1) ;left
AddTriangle(surf, v7,v1,v0)
AddTriangle(surf, v1,v6,v5) ;top
AddTriangle(surf, v1,v5,v2)
AddTriangle(surf, v0,v3,v4) ;bottom
AddTriangle(surf, v0,v4,v7)
Return mesh
End Function
Текстурные координаты я указывал, не помогло. Играл с EntityFX - не помогло.
Порядок вершин на картинке.
|
(Offline)
|
|
16.08.2012, 11:01
|
#2
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Самодельный куб из 8 вершин
из воьсми вершин - никак.
в кубе хоть и 8 вершин, однако 24 нормали должно быть.
делай из 24-рех.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
|
pax (29.08.2012), Жека (16.08.2012)
|
16.08.2012, 12:39
|
#3
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Самодельный куб из 8 вершин
Можно эмулировать освещение лайтмапой по 2x2 пикселя на каждую сторону При этом вручную считать освещение
|
(Offline)
|
|
16.08.2012, 13:38
|
#4
|
Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Ответ: Самодельный куб из 8 вершин
Updatenormals() ?
|
(Offline)
|
|
16.08.2012, 13:42
|
#5
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Самодельный куб из 8 вершин
tirarex, эта команда даёт "некий" эффект, но не то что нужно. Кстати, и для блитцевых кубов она не тот эффект даёт, свет некрасиво ложится (рисунок справа); вот если с текстурой, то нормально.
Я хочу чёткие грани как на левой картинке.
Буду юзать блитцевый куб, выписал индексы его вершин.
Последний раз редактировалось Жека, 16.08.2012 в 13:58.
Причина: картинки добавил
|
(Offline)
|
|
16.08.2012, 14:40
|
#6
|
AnyKey`щик
Регистрация: 24.06.2012
Сообщений: 16
Написано 5 полезных сообщений (для 6 пользователей)
|
Ответ: Самодельный куб из 8 вершин
Сообщение от Жека
Я хочу чёткие грани как на левой картинке.
|
Ну отключай сглаженное освещение - EntityFX ( или BrushFX для отдельных сурфейсов ) с флагом 4.
ЗЫ
24 вершины нужно чтобы текстура нормально ложилась на каждую грань ( ведь если у тебя будет 8 вершин, то указав текстурные координаты для одной грани, ты не сможешь указать их для другой грани, вершины то общие будут )
Нормали вручную можешь расчитать - для каждого вертекса средне-арифметическое нормалей треугольников, которым он принадлежит. Нормаль треугольника - векторное произведение двух его ребер ( нормализованное естессно ). Хотя в твоем случае они не нужны, раз ты "плоские" грани хочешь.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:52.
|