forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Самодельный куб из 8 вершин (http://forum.boolean.name/showthread.php?t=17187)

Жека 16.08.2012 10:58

Самодельный куб из 8 вершин
 
Вложений: 1
Суть: блитцевый куб содержит 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 - не помогло.
Порядок вершин на картинке.

HolyDel 16.08.2012 11:01

Ответ: Самодельный куб из 8 вершин
 
из воьсми вершин - никак.
в кубе хоть и 8 вершин, однако 24 нормали должно быть.
делай из 24-рех.

Nerd 16.08.2012 12:39

Ответ: Самодельный куб из 8 вершин
 
Можно эмулировать освещение лайтмапой по 2x2 пикселя на каждую сторону :crazy: При этом вручную считать освещение :-D

tirarex 16.08.2012 13:38

Ответ: Самодельный куб из 8 вершин
 
Updatenormals() ?

Жека 16.08.2012 13:42

Ответ: Самодельный куб из 8 вершин
 
Вложений: 2
tirarex, эта команда даёт "некий" эффект, но не то что нужно. Кстати, и для блитцевых кубов она не тот эффект даёт, свет некрасиво ложится (рисунок справа); вот если с текстурой, то нормально.
Я хочу чёткие грани как на левой картинке.

Буду юзать блитцевый куб, выписал индексы его вершин.

Hartmann1 16.08.2012 14:40

Ответ: Самодельный куб из 8 вершин
 
Цитата:

Сообщение от Жека (Сообщение 236408)
Я хочу чёткие грани как на левой картинке.

Ну отключай сглаженное освещение - EntityFX ( или BrushFX для отдельных сурфейсов ) с флагом 4.
ЗЫ
24 вершины нужно чтобы текстура нормально ложилась на каждую грань ( ведь если у тебя будет 8 вершин, то указав текстурные координаты для одной грани, ты не сможешь указать их для другой грани, вершины то общие будут )

Нормали вручную можешь расчитать - для каждого вертекса средне-арифметическое нормалей треугольников, которым он принадлежит. Нормаль треугольника - векторное произведение двух его ребер ( нормализованное естессно ). Хотя в твоем случае они не нужны, раз ты "плоские" грани хочешь.


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

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