Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 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 - не помогло.
Порядок вершин на картинке.
Миниатюры
Нажмите на изображение для увеличения
Название: cube.jpg
Просмотров: 940
Размер:	9.8 Кб
ID:	17403  
(Offline)
 
Ответить с цитированием
Старый 16.08.2012, 11:01   #2
HolyDel
 
Регистрация: 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
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений
(для 1,471 пользователей)
Ответ: Самодельный куб из 8 вершин

Можно эмулировать освещение лайтмапой по 2x2 пикселя на каждую сторону При этом вручную считать освещение
__________________

(Offline)
 
Ответить с цитированием
Старый 16.08.2012, 13:38   #4
tirarex
Бывалый
 
Аватар для tirarex
 
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений
(для 866 пользователей)
Ответ: Самодельный куб из 8 вершин

Updatenormals() ?
(Offline)
 
Ответить с цитированием
Старый 16.08.2012, 13:42   #5
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Самодельный куб из 8 вершин

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

Буду юзать блитцевый куб, выписал индексы его вершин.
Миниатюры
Нажмите на изображение для увеличения
Название: simple.png
Просмотров: 932
Размер:	1.5 Кб
ID:	17405  Нажмите на изображение для увеличения
Название: normals.png
Просмотров: 928
Размер:	3.2 Кб
ID:	17406  

Последний раз редактировалось Жека, 16.08.2012 в 13:58. Причина: картинки добавил
(Offline)
 
Ответить с цитированием
Старый 16.08.2012, 14:40   #6
Hartmann1
AnyKey`щик
 
Регистрация: 24.06.2012
Сообщений: 16
Написано 5 полезных сообщений
(для 6 пользователей)
Ответ: Самодельный куб из 8 вершин

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

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


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com