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

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

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

Ответ
 
Опции темы
Старый 06.11.2013, 14:45   #1
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Работа с треугольниками

Возможно ли применять кисть к отдельному треугольнику, а не к всему Surface-у?
__________________
(Offline)
 
Ответить с цитированием
Старый 06.11.2013, 15:20   #2
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,442
Написано 5,269 полезных сообщений
(для 15,227 пользователей)
Ответ: Работа с треугольниками

Нет, нельзя. Придётся создать отдельный сурфейс.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Devilox (06.11.2013)
Старый 06.11.2013, 15:24   #3
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Работа с треугольниками

Тогда какой наименее затратный способ перевести все треугольники объекта в surface-ы?
P.S. Освещение нужно имитировать
__________________
(Offline)
 
Ответить с цитированием
Старый 06.11.2013, 15:34   #4
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,442
Написано 5,269 полезных сообщений
(для 15,227 пользователей)
Ответ: Работа с треугольниками

От такого количества сурфейсов скорость вся загнётся
Может, освещение лучше имитировать как-то иначе? Цветами вершин, например?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Devilox (06.11.2013)
Старый 06.11.2013, 15:52   #5
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Работа с треугольниками

А соприкасающиеся треугольники имеют разные vertex-ы?
P.S. Я просто хочу высчитывать нормали каждого треугольника, а потом менять цвет. На соединении граней могут быть лаги.
__________________
(Offline)
 
Ответить с цитированием
Старый 06.11.2013, 17:18   #6
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,442
Написано 5,269 полезных сообщений
(для 15,227 пользователей)
Ответ: Работа с треугольниками

Сообщение от Devilox Посмотреть сообщение
А соприкасающиеся треугольники имеют разные vertex-ы?
Как сделаешь так и будет.
Ты что-то типа этого хочешь?

Тогда это делается намного проще.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Devilox (06.11.2013)
Старый 06.11.2013, 17:24   #7
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Работа с треугольниками

Получилось, спасибо)
Global player
Global cam

Global sphere
Global lamp

Graphics3D 800,600,32,2
SetBuffer BackBuffer()


cam = CreateCamera()

player = CreateSphere()
EntityParent cam,player

piv = CreatePivot()

lamp = CreateSphere()
ScaleEntity lamp,0.1,0.1,0.1
PositionEntity lamp,2,1,-5

sphere = CreateSphere()
PositionEntity sphere,0,0,5
EntityFX sphere,35

While Not KeyHit(1)

CreateLightmap()

If KeyDown(200)
	MoveEntity lamp,0,0.1,0
ElseIf KeyDown(208)
	MoveEntity lamp,0,-0.1,0
EndIf

If KeyDown(203)
	MoveEntity lamp,-0.1,0,0
ElseIf KeyDown(205)
	MoveEntity lamp,0.1,0,0
EndIf


TurnEntity cam,MouseYSpeed()/5,0,0
TurnEntity player,0,-MouseXSpeed()/5,0
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
RotateEntity cam,EntityPitch(cam),0,0,0

If KeyDown(17)
	TranslateEntity player,(-0.5 * Cos(EntityPitch(cam))) * Sin(EntityYaw(player)),-0.5 * Sin(EntityPitch(cam)),(0.5 * Cos(EntityPitch(cam))) * Cos(EntityYaw(player))
ElseIf KeyDown(31)
	TranslateEntity player,(0.5 * Cos(EntityPitch(cam))) * Sin(EntityYaw(player)),0.5 * Sin(EntityPitch(cam)),(-0.5 * Cos(EntityPitch(cam))) * Cos(EntityYaw(player))
EndIf

If KeyDown(30)
	MoveEntity player,-0.5,0,0
ElseIf KeyDown(32)
	MoveEntity player,0.5,0,0
EndIf

UpdateWorld()
RenderWorld()

Text 10,10,("Use arrows to move the lamp")
Text 10,20,("Use WASD to move the observer")
Text 10,30,("Free look is available")

Flip

Wend

End

;----------Functions----------;

Function CreateLightmap()
	For m = 1 To CountSurfaces(sphere)
		surf = GetSurface(sphere,m)
		For n = 1 To CountTriangles(surf)
			v0 = TriangleVertex(surf,n,0)
			v1 = TriangleVertex(surf,n,-1)
			v2 = TriangleVertex(surf,n,-2)
			
			v0v1X# = VertexX(surf,v1) - VertexX(surf,v0)
			v0v1Y# = VertexY(surf,v1) - VertexY(surf,v0)
			v0v1Z# = VertexZ(surf,v1) - VertexZ(surf,v0)
			
			v0v2X# = VertexX(surf,v2) - VertexX(surf,v0)
			v0v2Y# = VertexY(surf,v2) - VertexY(surf,v0)
			v0v2Z# = VertexZ(surf,v2) - VertexZ(surf,v0)
			
			i# = (v0v1Y * v0v2Z - v0v2Y * v0v1Z)
			j# = (v0v1Z * v0v2X - v0v2Z * v0v1X)
			k# = (v0v1X * v0v2Y - v0v2X * v0v1Y)
			
			x# = EntityX(lamp) - ((VertexX(surf,v0) + VertexX(surf,v1) + VertexX(surf,v2)) / 3)
			y# = EntityY(lamp) - ((VertexY(surf,v0) + VertexY(surf,v1) + VertexY(surf,v2)) / 3)
			z# = EntityZ(lamp) - ((VertexZ(surf,v0) + VertexZ(surf,v1) + VertexZ(surf,v2)) / 3)
			
			CosA# = (x * i + y * j + z * k) / (Sqr(x^2 + y^2 + z^2) * Sqr(i^2 + j^2 + k^2))
			
			If CosA >= 0
				VertexColor(surf,v0,0,0,0)
				VertexColor(surf,v1,0,0,0)
				VertexColor(surf,v2,0,0,0)
			Else
				VertexColor(surf,v0,255 * -CosA,255 * -CosA,255 * -CosA)
				VertexColor(surf,v1,255 * -CosA,255 * -CosA,255 * -CosA)
				VertexColor(surf,v2,255 * -CosA,255 * -CosA,255 * -CosA)
			EndIf
		Next
	Next
End Function
__________________
(Offline)
 
Ответить с цитированием
Старый 06.11.2013, 17:25   #8
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Работа с треугольниками

Только вот созданный exe-шник не открывается: пишет MAV...
Памяти должно хватать..
P.S. мб, вычисления библиотекой делать?
__________________
(Offline)
 
Ответить с цитированием
Старый 06.11.2013, 18:43   #9
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Работа с треугольниками

Блин, зачем я матрицы вычислял... В blitz-е уже всё есть
Function CreateLightmap()
	For m = 1 To CountSurfaces(sphere)
		surf = GetSurface(sphere,m)
		For n = 1 To CountVertices(surf)
							
			i# = VertexNX(surf,n)
			j# = VertexNY(surf,n)
			k# = VertexNZ(surf,n)
			
			x# = EntityX(lamp) - VertexX(surf,n)
			y# = EntityY(lamp) - VertexY(surf,n)
			z# = EntityZ(lamp) - VertexZ(surf,n)
			
			CosA# = (x * i + y * j + z * k) / (Sqr(x^2 + y^2 + z^2) * Sqr(i^2 + j^2 + k^2))
			
			If CosA <= 0
				VertexColor(surf,n,0,0,0)
			Else
				VertexColor(surf,n,255 * CosA,255 * CosA,255 * CosA)
			EndIf
		Next
	Next
End Function
Только вот при использовании максовских моделек появляются вывернутые наизнанку вертексы
Да и вообще стало неправильно работать, матрицы считать лучше, но MAV часто вылетает
__________________
(Offline)
 
Ответить с цитированием
Старый 07.11.2013, 04:52   #10
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Работа с треугольниками

Похоже, что проверка нормалей - плохая затея. Может, кто знает другие алгоритмы реализации освещения?
__________________
(Offline)
 
Ответить с цитированием
Старый 07.11.2013, 13:23   #11
ARA
ТЫ ЧООО?
 
Аватар для ARA
 
Регистрация: 26.02.2007
Сообщений: 3,321
Написано 1,989 полезных сообщений
(для 7,107 пользователей)
Ответ: Работа с треугольниками

А чем не устроило CreateLight()?
(Offline)
 
Ответить с цитированием
Старый 07.11.2013, 13:38   #12
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Работа с треугольниками

Нет затемнения неосвещённых частей
__________________
(Offline)
 
Ответить с цитированием
Старый 07.11.2013, 13:45   #13
ARA
ТЫ ЧООО?
 
Аватар для ARA
 
Регистрация: 26.02.2007
Сообщений: 3,321
Написано 1,989 полезных сообщений
(для 7,107 пользователей)
Ответ: Работа с треугольниками

За затемнения отвечает AmbientLight()
Или ты про отбрасывание теней?
(Offline)
 
Ответить с цитированием
Старый 07.11.2013, 13:52   #14
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Работа с треугольниками

Тени тоже
__________________
(Offline)
 
Ответить с цитированием
Старый 07.11.2013, 14:07   #15
ARA
ТЫ ЧООО?
 
Аватар для ARA
 
Регистрация: 26.02.2007
Сообщений: 3,321
Написано 1,989 полезных сообщений
(для 7,107 пользователей)
Ответ: Работа с треугольниками

Самый ок способ освещения в бляце - лайтмапы. Всё остальное фуфел.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо ARA за это полезное сообщение:
KCEPOKC (08.11.2013), SBJoker (08.11.2013)
Ответ


Опции темы

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

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


Часовой пояс GMT +1, время: 08:24.


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