forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Советы по оптимизации (http://forum.boolean.name/showthread.php?t=17056)

burovalex 20.07.2012 22:32

Советы по оптимизации
 
Приветствую товарищи!
Хочу оптимизировать проект, для чего нужно динамически изменять детализацию мешей от расстояния.
Как замечал в игрушках, довольно полезная штука. Вот только организация сие оптимизации мне не очень ясна.

Эт что, надо каждый цикл проверять расстояние со всеми объектами и если оно меньше "n" то удалить старый low-меш и загрузить high-меш??
Наверное я не правильно думаю, а если объектов 1000 и каждый цикл (ну даже через цикл 2 3) проверять расстояние между Всеми объектами это вроде ресурсоемко получается?! :rolleyes:

HolyDel 20.07.2012 22:37

Ответ: Советы по оптимизации
 
меши загруженны сразу.
ну или по крайней мере несколько лодов +/- текущего, с фоновой подгрузкой ближайших (но это если выеживаться).
и в зависимости от расстояния просто рисуется тот или иной меш.

Nerd 20.07.2012 22:45

Ответ: Советы по оптимизации
 
Цитата:

Сообщение от burovalex (Сообщение 233562)
Эт что, надо каждый цикл проверять расстояние со всеми объектами и если оно меньше "n" то удалить старый low-меш и загрузить high-меш??
Наверное я не правильно думаю, а если объектов 1000 и каждый цикл (ну даже через цикл 2 3) проверять расстояние между Всеми объектами это вроде ресурсоемко получается?! :rolleyes:

Загружать во время исполнения нехорошо - только hide/show.
Иметь 1000 объектов - само по себе ресурсоёмко.
Я бы делал цикл проверки в отдельном потоке с задержкой между итерациями.

burovalex 20.07.2012 23:06

Ответ: Советы по оптимизации
 
Цитата:

Сообщение от HolyDel (Сообщение 233566)
меши загруженны сразу.
ну или по крайней мере несколько лодов +/- текущего, с фоновой подгрузкой ближайших (но это если выеживаться).
и в зависимости от расстояния просто рисуется тот или иной меш.

Ну да, не то написал, сам так не делаю. Сначала загружаю, а потом просто копирую.

burovalex 20.07.2012 23:12

Ответ: Советы по оптимизации
 
Значит все-таки проверять расстояние самый оптимальный вариант?
Т.е. надо создать пивот и к нему прикрутить 3 меша?

И что получается если объект делать в 3 ступени получится так?:
if entitydistance(camera,pivot)>100 then
showentity ent1
hideentity ent2
hideentity ent3
endif

Так чтоль?

burovalex 20.07.2012 23:28

Ответ: Советы по оптимизации
 
И еще вопросик, стоит ли заморачиваться с альфой, на определенном расстоянии видны low и high с плавным переходом и далле hideentity, или это уже слишком? )

HolyDel 20.07.2012 23:37

Ответ: Советы по оптимизации
 
хз. надо играться. я думаю будет некрасиво.

Nerd 20.07.2012 23:41

Ответ: Советы по оптимизации
 
Цитата:

Сообщение от burovalex (Сообщение 233588)
И еще вопросик, стоит ли заморачиваться с альфой, на определенном расстоянии видны low и high с плавным переходом и далле hideentity, или это уже слишком? )

Появятся некрасивые артефакты при переходе (из-за пресечения сеток), если расстояние не сильно большое, а оно того не стоит.
В GTA IV, ЕМНИП, модельки плавно менялись только на большом расстоянии, а на среднем только текстуры.
Если нет сильно большого пространства, то не стоит замарачиваться вообще с lod'ом.

burovalex 20.07.2012 23:51

Ответ: Советы по оптимизации
 
Вот спасибо, помогли!
Кстати, не знал что такое lod, тож спс )

Как думаете дупустим на сдщжное здание 3 уровня мешей нормально будет?

burovalex 20.07.2012 23:54

Ответ: Советы по оптимизации
 
И еще, вопрос, у меня есть трава, состоящая из 3-5 плоских двухсторонних мешей с одним сурфейсом.
Стоит ли на расстоянии превращать их в один плоский меш, поворачивающийся к камере?

Nerd 20.07.2012 23:57

Ответ: Советы по оптимизации
 
Цитата:

Сообщение от burovalex (Сообщение 233592)
И еще, вопрос, у меня есть трава, состоящая из 3-5 плоских двухсторонних мешей с одним сурфейсом.
Стоит ли на расстоянии превращать их в один плоский меш, поворачивающийся к камере?

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

burovalex 21.07.2012 00:14

Ответ: Советы по оптимизации
 
Спасибо за развеивание сомнений! :)

LLI.T.A.L.K.E.R. 21.07.2012 13:08

Ответ: Советы по оптимизации
 
http://forum.boolean.name/showthread...225#post216225
Сектора (ячейки) перед зрением игрока становятся видимыми, остальные остаются скрытыми (ShowEntity | HideEntity).

Кратко дополню (как я предполагал сделать):
Например есть объект дерево. В type. Оно имеет две model и model_low. Когда нужно (вблизи) объект на карте (из того type) воспринимает хорошую model, в дали же отображает некачественную model_low.

burovalex 23.07.2012 23:16

Ответ: Советы по оптимизации
 
Вопрос
Кто-нибудь знает. Есть ли разница в единицах?
Например если я в блитце состряпаю мир в размерах не 1,2,10... а например 100000 размер машины, 1000к размер дома и т.д. и обзор камеры 100000к. Или вообще не важно какие размеры?

HolyDel 23.07.2012 23:19

Ответ: Советы по оптимизации
 
важно. с большими цифрами будут адовы глюки из-за погрешности флоата.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot