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

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

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

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

Ответ
 
Опции темы
Старый 20.05.2009, 21:26   #1
karry
Нуждающийся
 
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений
(для 10 пользователей)
Помогите разобраться с TerrainHeight

Не могу вникнуть в пример. В примере двигаем по террайну шарик, сообщающий свои x и z координаты, которые затем используются в качестве аргументов функции TerrainHeight, выдающей дробь от 0 до 1.

Пишу то же самое, передвигаю стрелками по террайну шарик, а потом в главном цикле пишу :
mx#=EntityX(mesh,1)
mz#=EntityZ(mesh,1)
ter_height#=TerrainHeight#(terrain,mx,mz)
Text 20,40,ter_height
Возюкаю шарик по горам, а ter_height всегда выдает 0.

Кроме того, если функция выдает дробь от 0 до 1, то применительно к террайнам это что означает ? Самая высокая точка и самая низкая ? В примере террайн плоский, и нигде его пределы по высоте не задаются, тогда что означает эта единица ?
(Offline)
 
Ответить с цитированием
Старый 20.05.2009, 21:36   #2
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Ответ: Помогите разобраться с TerrainHeight

Хелп когда-нибудь читать будем?
Разберись с параметрами сначала. Терраин у тебя наверняка растянут, и значит ты передаешь в функцию не то, что надо.

УПД. И пример там очень наглядный.
(Offline)
 
Ответить с цитированием
Старый 20.05.2009, 21:57   #3
karry
Нуждающийся
 
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений
(для 10 пользователей)
Ответ: Помогите разобраться с TerrainHeight

Хелп когда-нибудь читать будем?
Всю одну строчку ?
Description
Returns the height of the terrain at terrain grid coordinates x,z. The value returned is in the range 0 to 1.
Где здесь хоть слово о растянутости-не растянутости, или о том что означает единица ?

Терраин у тебя наверняка растянут
А какая разница ? Ну будет другой коэффициэнт, но не вечный ноль же ?

И пример там очень наглядный.
Сколько лет надо изучать программирование чтобы он стал наглядным ?
(Offline)
 
Ответить с цитированием
Старый 20.05.2009, 22:51   #4
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Ответ: Помогите разобраться с TerrainHeight

Специально залезу в русский хелп и дам тебе цитату с примером, который очень-очень нагляден (достаочно запустить):

 
TerrainHeight# ( terrain,grid_x,grid_z )
Параметры
terrain - указатель ландшафта 
grid_x - координата x в сетке ландшафта 
grid_z - координата z в сетке ландшафта 
Описание
Возвращает высоту ландшафта в координатах x,z его сетки. Значение будет в пределах от 0 до 1. 
 
Пример
; Пример TerrainHeight 
; --------------------- 
Graphics3D 640,480 
SetBuffer BackBuffer() 
terra_size=32 ; установим размер ландшафта и число сегментов по каждой стороне 
x_scale=10 ; масштаб по оси x 
y_scale=50 ; масштаб по оси y 
z_scale=10 ; масштаб по оси z 
marker_x=terra_size/2 ; координата маркера по оси x 
marker_z=terra_size/2 ; координата маркера по оси z 
camera=CreateCamera() 
PositionEntity camera,(terra_size*x_scale)/2,50,0 ; позиция камеры для лучшего обзора! 
RotateEntity camera,30,0,0 ; поворот камеры 
light=CreateLight() 
RotateEntity light,90,0,0 
; создаем ландшафт 
terra=CreateTerrain(terra_size) 
ScaleEntity terra,x_scale,y_scale,z_scale 
; текстурируем его 
grass_tex=LoadTexture("media/mossyground.bmp") 
EntityTexture terra,grass_tex 
; создаем маркер 
marker=CreateSphere() 
ScaleEntity marker,1,1,1 
EntityColor marker,255,0,0 
While Not KeyDown(1) 
; курсорными клавишами управляем маркером 
If KeyHit(205)=True Then marker_x=marker_x+1 
If KeyHit(203)=True Then marker_x=marker_x-1 
If KeyHit(208)=True Then marker_z=marker_z-1 
If KeyHit(200)=True Then marker_z=marker_z+1 
; устанавливаем высоту ландшафта в координаиах маркера 
marker_y#=TerrainHeight(terra,marker_x,marker_z) 
; клавиша A - увеличить высоту 
If KeyDown(30)=True 
If marker_y#<1 Then marker_y#=marker_y#+0.005 
ModifyTerrain terra,marker_x,marker_z,marker_y# 
EndIf 
; клавиша Z - уменьшить высоту 
If KeyDown(44)=True 
If marker_y#>0 Then marker_y#=marker_y#-0.005 
ModifyTerrain terra,marker_x,marker_z,marker_y# 
EndIf 
; Маркер позиционируем маркер, принимая во внимание масштабы ландшафта по осям x, y и z 
PositionEntity marker,marker_x*x_scale,marker_y#*y_scale,marker_z*z_scale 
RenderWorld 
Text 0,0,"Use cursor keys to move marker over the terrain" 
Text 0,20,"Press A or Z to alter height of terrain at marker's position" 
Text 0,40,"Terrain Height: "+marker_y# 
Flip 
Wend 
End
(Offline)
 
Ответить с цитированием
Старый 20.05.2009, 23:08   #5
karry
Нуждающийся
 
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений
(для 10 пользователей)
Ответ: Помогите разобраться с TerrainHeight

Этот пример я читал и запускал уже раз двадцать, толку с его наглядности...ну вот координата высоты изменяется до 1. Откуда она берется, эта единица ?!! Ландшафт генерируется прямо в Блице, он плоский. Откуда берется этот предел высоты ?

И опять, смотрим в код, видим такую последовательность :
marker_x=marker_x+1
marker_z=marker_z+1
marker_y#=TerrainHeight(terra,marker_x,marker_z)
В чем принципиальное отличие от того кода что я написал в первом посте ? Я не понимаю почему тут работает а у меня нет.

Если бы все могли так сразу врубиться в программистскую логику просто прочитав мануал - программисты бы сейчас получали наааамного меньше, и было бы их в десятки раз больше.
(Offline)
 
Ответить с цитированием
Старый 20.05.2009, 23:11   #6
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Помогите разобраться с TerrainHeight

Если бы все могли так сразу врубиться в программистскую логику просто прочитав мануал - программисты бы сейчас получали наааамного меньше, и было бы их в десятки раз больше.
ага, как "дизайнеров" !!
(Offline)
 
Ответить с цитированием
Старый 20.05.2009, 23:17   #7
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Ответ: Помогите разобраться с TerrainHeight

Жаль, что сам не понял. Поясняю:

ScaleEntity terra,x_scale,y_scale,z_scale
Мы изменили размеры террайна, но координаты сетки остались прежние. Т.е. если терраин был например 64х64, таким он и останется. А вот в реальных координатах это уже будет (64*x_scale)x(64*y_scale). Аналогично с высотой - 1 соответствует z_scale. Поэтому числа подставляемые в terrainheight надо делить на соответсвующие значения скейла, а для получения реальной высоты - домножать. И всё.

Последний раз редактировалось MiXaeL, 20.05.2009 в 23:22. Причина: небольшой упд
(Offline)
 
Ответить с цитированием
Старый 20.05.2009, 23:27   #8
karry
Нуждающийся
 
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений
(для 10 пользователей)
Ответ: Помогите разобраться с TerrainHeight

Аналогично с высотой - 1 соответствует z_scale.
Так у него же изначально нулевая высота, как из нуля умножением на scale получается единица ? Или за единицу принимается внутренняя координата блица 1 ?
(Offline)
 
Ответить с цитированием
Старый 20.05.2009, 23:29   #9
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Ответ: Помогите разобраться с TerrainHeight

да, по умолчанию у террейна высота равна 1 по блитцевским координатам.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
karry (20.05.2009)
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с разобраться в ODE!!! Ich Библиотеки 15 10.04.2012 15:29
Помогите разобраться с с++. BolVan C++ 30 20.12.2007 11:39
Помогите разобраться OttoRUS 3D-программирование 38 05.10.2007 01:38
Помогите разобраться AndruXa Blitz3D 5 16.09.2007 15:41
Помогите разобраться _maxim_ 3D-программирование 9 19.11.2006 09:17


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


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