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

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

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

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

Ответ
 
Опции темы
Старый 15.12.2008, 07:04   #1
Yanez
Нуждающийся
 
Аватар для Yanez
 
Регистрация: 16.10.2008
Сообщений: 50
Написано 3 полезных сообщений
(для 3 пользователей)
Реализация леса.

Привет!

Хочу реализовать лес с наименьшими фпс потерями. Подскажите, как выполнить инстансинг стандартными блитц-средствами?
__________________
По следам BASIC
(Offline)
 
Ответить с цитированием
Старый 15.12.2008, 20:17   #2
BlackDragon
Проектировщик
 
Аватар для BlackDragon
 
Регистрация: 25.03.2007
Сообщений: 536
Написано 252 полезных сообщений
(для 715 пользователей)
Ответ: Реализация леса.

Я думаю, что можно сделать примерно так:
Миниатюры
Нажмите на изображение для увеличения
Название: scr009.JPG
Просмотров: 1122
Размер:	156.4 Кб
ID:	5066  
(Offline)
 
Ответить с цитированием
Старый 16.12.2008, 16:00   #3
Damp
Знающий
 
Регистрация: 12.07.2007
Сообщений: 297
Написано 50 полезных сообщений
(для 133 пользователей)
Ответ: Реализация леса.

Лес из 5-10 тыс. не сложных деревьев можно сделать. Только нужна определенная плотность леса, так чтобы в камеру не попадало больше скажем 100-200 штук, для чего нужен хороший менеджер, идти нужно в направлении HideEntity/ShowEntity
(Offline)
 
Ответить с цитированием
Старый 16.12.2008, 21:00   #4
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Реализация леса.

для чего нужен хороший менеджер, идти нужно в направлении HideEntity/ShowEntity
угу, только хайд/шоу не спасёт от наличия в сцене смертельного количества ентитей.

об чём я и говорил.
не сделать нормальный лес на блице.

можно в приницпе генерить, т.е. копировать деревья вокруг игрока при его передвижении. вблизи детальные, вдалеке плотную завесу спрайтов, чтоб при малом количестве было ощущение леса.
(Offline)
 
Ответить с цитированием
Старый 16.12.2008, 21:19   #5
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Реализация леса.

в лыбе BlitzGrass трава так генерится !! т.е. идеш и она пред тобой выростает !! что бы небыло "предтобой" нужно увеличить радиус т.е. количество кустиков травы что в свою очередь влеяет на скорость генирации !! при том что кустик травы это около 4-16 поликов !!
а нормальное дерево вблизи это около 1000 !! если взять их 100 то получим 100К полигонов что в принципе позволяют многие современные системы !!
(Offline)
 
Ответить с цитированием
Старый 16.12.2008, 23:02   #6
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Реализация леса.

Сообщение от Mr_F_ Посмотреть сообщение
угу, только хайд/шоу не спасёт от наличия в сцене смертельного количества ентитей.

об чём я и говорил.
не сделать нормальный лес на блице.

можно в приницпе генерить, т.е. копировать деревья вокруг игрока при его передвижении. вблизи детальные, вдалеке плотную завесу спрайтов, чтоб при малом количестве было ощущение леса.
С кривыми руками - не сделать.
А с сингл-сурфейсом сделать и ещё как.
З.Ы. кстати Hide/ShowEntity спасает от кол-ва ентити.

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

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

(Offline)
 
Ответить с цитированием
Старый 16.12.2008, 23:33   #7
jimon
 
Сообщений: n/a
Ответ: Реализация леса.

ну дык, а толку то ? всё равно все деревья будут гонятся по шине, а это в любом случае медленее когда деревья берутся из видеопамяти
 
Ответить с цитированием
Старый 17.12.2008, 20:25   #8
Damp
Знающий
 
Регистрация: 12.07.2007
Сообщений: 297
Написано 50 полезных сообщений
(для 133 пользователей)
Ответ: Реализация леса.

Не, хайд как раз и есть спасение от числа энтити )) , только приходится дистанцию обзора уменьшать и прятать работу менеджера сцены туманом.
Ок, завтра покажу, что имею ввиду, лес из 10 тыс. объектов.
(Offline)
 
Ответить с цитированием
Старый 18.12.2008, 09:19   #9
Damp
Знающий
 
Регистрация: 12.07.2007
Сообщений: 297
Написано 50 полезных сообщений
(для 133 пользователей)
Ответ: Реализация леса.

Вот пример леса из 10К объектов и как вариант менеджера.
Смысл в том чтобы скрыть все что далеко и сзади камеры + отсрочка проверки расстояния и отслеживание перемещения камеры.
На моем симпроне 2000 без менеджера фпс = 7...13 , с ним 50...60.
Вложения
Тип файла: zip Mng.zip (47.4 Кб, 556 просмотров)
(Offline)
 
Ответить с цитированием
Старый 18.12.2008, 11:09   #10
Yanez
Нуждающийся
 
Аватар для Yanez
 
Регистрация: 16.10.2008
Сообщений: 50
Написано 3 полезных сообщений
(для 3 пользователей)
Я не лесник, но, вроде, удалось вырастить рощу. Создал несколько групп мешей, в каждую группу кучу деревьев. ФПС держит хорошо(100-200 кадров) , поликов около 50к-100к.

По поводу HideEntity/ShowEntity. Заметил очень помогает при ограниченном обзоре камеры, в камерах от первого или третьего лица( РПГ или шутер). Лучше чем в один меш.

При камере сверху (аля РТС), помогает в один меш больше.

Мои наблюдения,

Сообщение от Damp Посмотреть сообщение
Вот пример леса из 10К объектов
что там, посмотрим...
__________________
По следам BASIC

Последний раз редактировалось Yanez, 18.12.2008 в 11:22.
(Offline)
 
Ответить с цитированием
Старый 18.12.2008, 11:47   #11
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Реализация леса.

Давно извесно что HideEntity/ShowEntity безбожно тормозят, юзайте EntityAlpha 0, эффект тотже, а скорости больше.
__________________
(Offline)
 
Ответить с цитированием
Старый 18.12.2008, 13:06   #12
Damp
Знающий
 
Регистрация: 12.07.2007
Сообщений: 297
Написано 50 полезных сообщений
(для 133 пользователей)
Ответ: Реализация леса.

Не, альфа=0 не прокатит. Только хайд\шоу, хайд полностью выводит из рендера, не видно, не пикается, нет коллизий. Если схайдить все 10К деревьев, фпс будет как будь-то и нет ни каких деревьев.
Если лес, то просто по одному скрывать, если помещения, то эффективнее секторами.
(Offline)
 
Ответить с цитированием
Старый 19.12.2008, 08:23   #13
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Радость Re: Реализация леса.

Вобщем, расскрываю секрет как сделать всё просто и быстро)
;-------------- В начале программы-----------------
Global 
idd=9000
Dim arrpalm
(idd,3)
Global 
palm=LoadMesh ("tree.b3d")
ScaleEntity palm,5,5,5
For 1 To idd
arrpalm
(i,0)=CopyEntity (palm)
.
tray
c_x
=Rnd(25000)
c_z=Rnd(25000)
c_y=TerrainY(terrain,c_x,100,c_z)
If 
c_y<90 Then Goto tray
arrpalm
(i,1)=Float(c_x)
arrpalm(i,2)=Float(c_y)-3
arrpalm
(i,3)=Float(c_z)
PositionEntity arrpalm(i,0),arrpalm(i,1),arrpalm(i,2),arrpalm(i,3),1
RotateEntity arrpalm
(i,0),0,Rnd(360),0
EntityAutoFade arrpalm
(i,0),1000,1001
Next
HideEntity palm
;----------------------Вызывать в теле игрыи желательно не каждый цыкл--------
Function 
updata_palm()
xf=Rnd(1,5)
Select xf
Case 1
For =1 To idd Step 1
distx
=arrpalm(i,1)-EntityX(plr,1)
distz=arrpalm(i,3)-EntityZ(plr,1)
If 
arrpalm(i,0)=0
If distx>-1100 And distx<1100
If distz>-1100 And distz<1100
arrpalm
(i,0)=CopyEntity (palm)
PositionEntity arrpalm(i,0),arrpalm(i,1),arrpalm(i,2),arrpalm(i,3),1
RotateEntity arrpalm
(i,0),0,Rnd(360),0
EntityAutoFade arrpalm
(i,0),1000,1400
EndIf 
EndIf
ElseIf 
arrpalm(i,0)<>0
If EntityDistance (arrpalm(i,0),plr)>1400
FreeEntity arrpalm
(i,0)
 
arrpalm(i,0)=0
Goto nexs
EndIf
EndIf
.
nexs
Next
Case 2
For =1 To idd Step 2
distx
=arrpalm(i,1)-EntityX(plr,1)
distz=arrpalm(i,3)-EntityZ(plr,1)
If 
arrpalm(i,0)=0
If distx>-1100 And distx<1100
If distz>-1100 And distz<1100
arrpalm
(i,0)=CopyEntity (palm)
PositionEntity arrpalm(i,0),arrpalm(i,1),arrpalm(i,2),arrpalm(i,3),1
RotateEntity arrpalm
(i,0),0,Rnd(360),0
EntityAutoFade arrpalm
(i,0),1000,1400
EndIf 
EndIf
ElseIf 
arrpalm(i,0)<>0
If EntityDistance (arrpalm(i,0),plr)>1400
FreeEntity arrpalm
(i,0)
 
arrpalm(i,0)=0
Goto nexs1
EndIf
EndIf
.
nexs1
Next
Case 3
For =1 To idd Step 2
distx
=arrpalm(i,1)-EntityX(plr,1)
distz=arrpalm(i,3)-EntityZ(plr,1)
If 
arrpalm(i,0)=0
If distx>-1100 And distx<1100
If distz>-1100 And distz<1100
arrpalm
(i,0)=CopyEntity (palm)
PositionEntity arrpalm(i,0),arrpalm(i,1),arrpalm(i,2),arrpalm(i,3),1
RotateEntity arrpalm
(i,0),0,Rnd(360),0
EntityAutoFade arrpalm
(i,0),1000,1400
EndIf 
EndIf
ElseIf 
arrpalm(i,0)<>0
If EntityDistance (arrpalm(i,0),plr)>1400
FreeEntity arrpalm
(i,0)
 
arrpalm(i,0)=0
Goto nexs2
EndIf
EndIf
.
nexs2
Next
Default
For 
=1 To idd Step 5
distx
=arrpalm(i,1)-EntityX(plr,1)
distz=arrpalm(i,3)-EntityZ(plr,1)
If 
arrpalm(i,0)=0
If distx>-1100 And distx<1100
If distz>-1100 And distz<1100
arrpalm
(i,0)=CopyEntity (palm)
PositionEntity arrpalm(i,0),arrpalm(i,1),arrpalm(i,2),arrpalm(i,3),1
RotateEntity arrpalm
(i,0),0,Rnd(360),0
EntityAutoFade arrpalm
(i,0),1000,1400
EndIf 
EndIf
ElseIf 
arrpalm(i,0)<>0
If EntityDistance (arrpalm(i,0),plr)>1400
FreeEntity arrpalm
(i,0)
 
arrpalm(i,0)=0
Goto nexs3
EndIf
EndIf
.
nexs3
Next
End Select
End 
Function 
Воть) у меня нормально тянет 30к (idd)деревьев на карту) можно сделать там коечто типами и ещё немного ускорить алгоритм, но это уже сами думайте
(Offline)
 
Ответить с цитированием
Старый 19.12.2008, 10:44   #14
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Реализация леса.

Сообщение от Damp Посмотреть сообщение
Не, альфа=0 не прокатит. Только хайд\шоу, хайд полностью выводит из рендера, не видно, не пикается, нет коллизий. Если схайдить все 10К деревьев, фпс будет как будь-то и нет ни каких деревьев.
Если лес, то просто по одному скрывать, если помещения, то эффективнее секторами.
А ты бы сначала проверил чем вот так безапелляционно утверждать.
__________________
(Offline)
 
Ответить с цитированием
Старый 19.12.2008, 13:13   #15
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Реализация леса.

ну что вы. нужно скывать "рощи", имхо, чем поодному дереву. т.е. парентить скажем сотню деревьев к одному пивоту и скрывать\показывать его. еще лучше сделать ету "рощу" одним сюрфейсом.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация простой камеры. Данил 3D-программирование 22 18.11.2007 02:20
Реализация диалога. Рудольф 3D-программирование 3 14.07.2007 17:13
Реализация трассера nJunk 3D-программирование 11 17.04.2007 02:09
Реализация игрока в FPS X-Ranger 3D-программирование 7 06.03.2007 02:09


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


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