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

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

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

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

Ответ
 
Опции темы
Старый 20.10.2009, 18:03   #1
Baisangur
ПроЭктировщик
 
Аватар для Baisangur
 
Регистрация: 10.03.2009
Адрес: Казахстан->Кустанай
Сообщений: 147
Написано 12 полезных сообщений
(для 23 пользователей)
Копание земли...

Здравствуйте!
Возник следующий вопрос:
Как делать копание земли эсковатором?
Т.е. имеется модель эскаватора, при неких манипуляциях с управлением он должен ковшом хапнуть кусок земли.

Какие решения были предложены мозгом:
1) Делать землю кубиками, подключать физ. движок.
Но тут получается столько кубиков, что как бы процессор на расплавился.

2) При опускании ковша в меш земли, по опред радиусу вырезать
из меша земли куб, вставлять идентичный куб в ковш и деформировать его
по рандому.
Проблема в том, что я не представляю до конца как это в блице реализовать, но может этот способ достоен существования?

Хочется услышать ваши мнения и предложения по этому поводу =)
(Offline)
 
Ответить с цитированием
Старый 20.10.2009, 18:09   #2
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Радость Ответ: Копание земли...

Мне мозг подсказывает ещё одно решение -

3) Сделать землю террайном, вычислить место где экскаватор копнул, продавить и перекрасить в этом месте террайн так как нужно. Радиус ямы легко вычислить через cos,sin...
Ну а модель куса земли смоделировать в 3d max.

Правда это решение тоже не без изъянов.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
NitE (20.10.2009)
Старый 20.10.2009, 18:15   #3
Baisangur
ПроЭктировщик
 
Аватар для Baisangur
 
Регистрация: 10.03.2009
Адрес: Казахстан->Кустанай
Сообщений: 147
Написано 12 полезных сообщений
(для 23 пользователей)
Ответ: Копание земли...

FireOwl, очень интересное решение, думаю что из всех 3 оно самое оптимальное. Не подскажешь каким образом в блице производится "продавка" террейна? И я в тригонометрии нуб, каким образом вычислить радиус ямы? =)
(Offline)
 
Ответить с цитированием
Старый 20.10.2009, 18:19   #4
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Ответ: Копание земли...

это не интересное, а нормальное решение, а вот чтоб додуматся до решений 1 и 2 это ещё нужна большая креативность.
радиус ямы видимо ненужен, ибо надо просто двигать вертексы на плейне, в справке всё есть.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо NitE за это полезное сообщение:
Baisangur (20.10.2009), FireOwl (20.10.2009), PackegerX (16.01.2010)
Старый 20.10.2009, 18:33   #5
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Копание земли...

Нет проблем! =)

Я имел ввиду, что надо создать стандартный Blitz-террайн. Затем получить координаты ямы, взять ближайшуу вершину террайна, высчитать остальные вершины в радиусе ямы и опустить их по очереди вниз.

Мой грубый и неоптимизированный вариант таков: =)

for r=0 to radius
   for c=0 to 360
      x=sin(c)*r+x0
      y=cos(c)*r+y0
      MoveВершинаТеррайна x,y,0,-depth,0         ; черт, забыл оператор =)
   next
next
где x0,y0 - координаты вершины ямы
depth - глубина ямы
radius - само собой радиус

Кстати, если не проверять вершины на "уже опущеность" некоторые будут опущены вниз по нескольку раз...

З.Ы. Проверить ничего не могу - сейчас нет под рукой компилятора, и не будет ближайшие 2 часа... =(
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо FireOwl за это полезное сообщение:
Baisangur (20.10.2009), PackegerX (16.01.2010)
Старый 20.10.2009, 18:52   #6
SKA_DIMKA
ПроЭктировщик
 
Аватар для SKA_DIMKA
 
Регистрация: 03.05.2009
Адрес: г.Волгоград
Сообщений: 136
Написано 32 полезных сообщений
(для 53 пользователей)
Ответ: Копание земли...

Используй команду (MODIFYTERRAIN). Поищи в ее в справке. Я сейчас с телефона сижу кажется там еще пример есть. Приду дамой скину. А на счет того что земля в ковше эт лучш смоделить и обрабатывать физическим движком когда высыпаеш. Или еще тебе как вариант можно использовать тот же модифитерраин в месте высыпания земли из ковша (только наоборот не углубление а выдавливание)
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо SKA_DIMKA за это полезное сообщение:
Baisangur (20.10.2009), DeadElf (21.10.2009), FireOwl (20.10.2009), PackegerX (16.01.2010)
Старый 20.10.2009, 19:00   #7
Baisangur
ПроЭктировщик
 
Аватар для Baisangur
 
Регистрация: 10.03.2009
Адрес: Казахстан->Кустанай
Сообщений: 147
Написано 12 полезных сообщений
(для 23 пользователей)
Ответ: Копание земли...

MoifyTerrain - вроде то что нужно! Большое Спасибо =))
(Offline)
 
Ответить с цитированием
Старый 20.10.2009, 19:44   #8
SKA_DIMKA
ПроЭктировщик
 
Аватар для SKA_DIMKA
 
Регистрация: 03.05.2009
Адрес: г.Волгоград
Сообщений: 136
Написано 32 полезных сообщений
(для 53 пользователей)
Ответ: Копание земли...

Вот как и обещал, справка по команде с примером (если у кого нет)

ModifyTerrain terrain,grid_x,grid_z,height#[,realtime]
Параметры
terrain - указатель ландшафта
grid_x - координата x в сетке ландшафта
grid_y - координата y в сетке ландшафта
height# - высота точки ландшафта. Должна быть в пределах 0-1.
realtime (не обязательно) - True - изменить ландшафт немедленно. False - изменить ландшафт при очередном выполнении команды RenderWorld. Значение по умолчанию - False.

Описание
Устанавливает высоту точки ландшафта.
Example
; Пример ModifyTerrain 
; --------------------- 

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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Baisangur (20.10.2009)
Старый 20.10.2009, 19:52   #9
Hurrit
Мастер
 
Аватар для Hurrit
 
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений
(для 2,207 пользователей)
Ответ: Копание земли...

Еще в примере castle земля деформировалась, советую его тоже посмотреть
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Baisangur (20.10.2009)
Старый 20.10.2009, 22:15   #10
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Ответ: Копание земли...

Ы, а если нужна реалистичность - булеан используй) хотя, чтобы его написать, ппц сколько затрат надо).
ну, и в реалтайме не получится)
(Offline)
 
Ответить с цитированием
Старый 20.10.2009, 22:46   #11
Dr.Evil
Оператор ЭВМ
 
Регистрация: 20.11.2006
Сообщений: 38
Написано 8 полезных сообщений
(для 11 пользователей)
Ответ: Копание земли...

Я конечно извиняюсь, но на сколько реалистично нужно сделать "копание грунта"? и какого?
просто общий принцип ресурсонеемкой обработки грунта тоже интересует!
(Offline)
 
Ответить с цитированием
Старый 24.10.2009, 23:49   #12
Baisangur
ПроЭктировщик
 
Аватар для Baisangur
 
Регистрация: 10.03.2009
Адрес: Казахстан->Кустанай
Сообщений: 147
Написано 12 полезных сообщений
(для 23 пользователей)
Ответ: Копание земли...

2 Dr.Evil:
Представь, что сидит человек за тренажером, и у него есть два рычажка он копает землю как будто на экскаваторе, кароч реалистичность на уровне симулятора т.е. средняя. Если быть точнее, мне желательно чтобы повлялась яма при копании, вышеприведенная мысль о булеане - это офигенное решение, но его реализация силами блица по моему мнение не достижима. Если тебе нужна ресурсонеемкая визуализация "копания грунта", то используй принцип, применямый в редакторах ландшафтов(описано выше). Если нужно реалистично очень, то я лично вижу лишь вариант, подключения очень качественного физ. движка и заполнение ямы кубиками, которые экскаватор будет в последствии выкапывать.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проект "Земли Рода" Чародей Болтовня 9 20.07.2007 01:36
Рисунки Akima/"Заброшенные земли" Akima Работы 132 20.04.2007 10:04
"Заброшенные земли" Akima Проекты на Blitz3D 63 06.07.2006 23:14


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


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