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

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

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

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 30.11.2007, 17:20   #1
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Лампочка Как определить, какова высота меша?

Есть земля-мешь. Есть игрок. Вопрос: как определить, на какой высоте (Y) класть декаль тени если известны её координаты X и Z (которые совпадают с координатами игрока) ?
Подскажите плз команду, которой это определяется если таковая существует. Заранее спасибо.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

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

(Offline)
 
Ответить с цитированием
Старый 30.11.2007, 17:47   #2
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
Re: Как определить, какова высота меша?

попробуй пиком!
(Offline)
 
Ответить с цитированием
Старый 30.11.2007, 17:52   #3
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Как определить, какова высота меша?

ABTOMAT, такой(математической) не существует, если нету закономерности у индексов вершин. Если террайн создаёться в блице но мешем, то есть возможность.
Вот примерно так выглядит математическая версия функции, она полностью на математике, и поэтому её производительность на высоте (без проблем вызывай хоть по 10 раз за цикл)
Function mTerrainY#(x#,z#) ; Terrain
	Local TerTotTilWH%=(CCnt*TilS)
	Local TerCurQuadX%,TerCurQuadZ%
	Local TerCurX#,TerCurZ#
	Local tX1#,tZ1#,tY1#
	Local tX2#,tZ2#,tY2#
	Local tX3#,tZ3#,tY3#
	Local QuadPX#,QuadPZ#
	Local a#,b#,c#,d#

	If x>0
		If x<(HeightMapS*TilS)
			If z>0
				If z<(HeightMapS*TilS)
					For t.Ter=Each Ter
					
						TerCurX#=((t\X-1)*TerTotTilWH)
						TerCurZ#=((t\Z-1)*TerTotTilWH)
						
						If x>TerCurX
							If x<((t\X)*TerTotTilWH)
								If z>TerCurZ
									If z<((t\Z)*TerTotTilWH)
										
										TerCurQuadX=((x-TerCurX-(TilS*.5))/TilS)
										TerCurQuadZ=((z-TerCurZ-(TilS*.5))/TilS)
										QuadPX=      (x-TerCurX-(TerCurQuadX*TilS))
										QuadPZ=(TilS-(z-TerCurZ-(TerCurQuadZ*TilS)))
										
										If TerQR(t\X,t\Z,TerCurQuadZ,TerCurQuadX)=1
											tX2=(((TerCurQuadX+1)*TilS)+TerCurX)
											tZ2=((TerCurQuadZ*TilS)+TerCurZ)
											tY2=TerVY(t\x,t\z,(TerCurQuadX+1),TerCurQuadZ)
											tX3=tX2-TilS
											tZ3=tZ2+TilS
											tY3=TerVY(t\x,t\z,TerCurQuadX,(TerCurQuadZ+1))
											If ((TilS-QuadPX)+QuadPZ)>TilS
												tX1=tX3
												tZ1=tZ2
												tY1=TerVY(t\x,t\z,TerCurQuadX,TerCurQuadZ)
											Else
												tX1=tX2
												tZ1=tZ3
												tY1=TerVY(t\x,t\z,(TerCurQuadX+1),(TerCurQuadZ+1))
											EndIf
										Else
											tX2=((TerCurQuadX*TilS)+TerCurX)
											tZ2=((TerCurQuadZ*TilS)+TerCurZ)
											tY2=TerVY(t\x,t\z,TerCurQuadX,TerCurQuadZ)
											tX3=tX2+TilS
											tZ3=tZ2+TilS
											tY3=TerVY(t\x,t\z,(TerCurQuadX+1),(TerCurQuadZ+1))
											If (QuadPX+QuadPZ)>TilS
												tX1=tX3
												tZ1=tZ2
												tY1=TerVY(t\x,t\z,(TerCurQuadX+1),TerCurQuadZ)
											Else
												tX1=tX2
												tZ1=tZ3
												tY1=TerVY(t\x,t\z,TerCurQuadX,(TerCurQuadZ+1))
											EndIf
										EndIf
										
										a#=-(tz3*ty2-tz1*ty2-tz3*ty1+ty1*tz2+ty3*tz1-tz2*ty3)
										b#= (tz1*tx3+tz2*tx1+tz3*tx2-tz2*tx3-tz1*tx2-tz3*tx1)
										c#= (ty2*tx3+ty1*tx2+ty3*tx1-ty1*tx3-ty2*tx1-tx2*ty3)
										d#=-a*tx1-b*ty1-c*tz1
										
										Y#=-(a*x+c*z+d)/b
										
										Return Y
									EndIf
								EndIf
							EndIf
						EndIf
					Next
				EndIf
			EndIf
		EndIf
	EndIf
End Function
А так можешь покурить это.
Делал по этой статье.
(Offline)
 
Ответить с цитированием
Старый 30.11.2007, 18:56   #4
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Re: Как определить, какова высота меша?

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

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

(Offline)
 
Ответить с цитированием
Старый 30.11.2007, 19:57   #5
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Как определить, какова высота меша?

ABTOMAT, тогда находи триангл на котором высота (это уже сам), и юзай этот алгоритмик, спомощью него должно прокатить, но не гарантирую.
a#=-(tz3*ty2-tz1*ty2-tz3*ty1+ty1*tz2+ty3*tz1-tz2*ty3)
b#= (tz1*tx3+tz2*tx1+tz3*tx2-tz2*tx3-tz1*tx2-tz3*tx1)
c#= (ty2*tx3+ty1*tx2+ty3*tx1-ty1*tx3-ty2*tx1-tx2*ty3)
d#=-a*tx1-b*ty1-c*tz1
Y#=-(a*x+c*z+d)/b
(Offline)
 
Ответить с цитированием
Старый 30.11.2007, 20:14   #6
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Re: Как определить, какова высота меша?

Пиком будет проще
а скорость там не нужна (для декалей) онож не в цикле
__________________
(Offline)
 
Ответить с цитированием
Старый 30.11.2007, 20:54   #7
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Re: Как определить, какова высота меша?

tormoz, я вообще-то хотел сделать тень, которая следует за игроком...

Но в принципе пик сойдёт для статики, тока надо алгоритмик сделать чтоб тенёк ровненько ложился

Ежели у кого есть, плз дайте примерчег где как раз есть тень, которая двигается по неровной поверхности.

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

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

(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Lib_displaysize - ширина и высота дисплея в текущий момент Bruteo Библиотеки 18 13.04.2010 23:28
Определить текстуру меша в определённой точке CRASHER 2D-программирование 26 29.06.2009 21:51
Как определить, освещён энтити или нет? ABTOMAT 3D-программирование 10 16.12.2007 14:51
как определить открытые фомы Sleepy bear Blitz3D 4 27.10.2007 22:32


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


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