Перейти к содержимому


Фотография
- - - - -

Сценарий Тормозит.


Тема находится в архиве. Это значит, что в нее нельзя ответить.
Для разархивирования этой темы отправьте сообщение с указанием URL топика
Сообщений в теме: 8

#1 Young Flyer

Young Flyer

    Новичок

  • Members
  • PipPipPipPip
  • 259 сообщений
    Reputation: 1

Отправлено 02 February 2004 - 14:36

Начал ставить трехмерные объекты (EOD) в сценарий, начал с ограждения - металлические трубы и бетонные плиты. Сначала сделал трубы круглыми - сценарий стал дико тормозить, 1 кадр в 2-4 секунды. После этого переделал трубы - сделал их квадратными - стало лучше, но FPS все равно стал заметно меньше. А ведь это только начало - сценарий практически пустой. А что же будет, когда здания начну ставить? Подскажите кто-нить, как с этим бороться.

Прикрепленные изображения

  • ZABOR.JPG


#2 Alexander Belov

Alexander Belov

    Дока

  • VIPvip
  • PipPipPipPipPipPip
  • 4122 сообщений
    Reputation: 856

Отправлено 02 February 2004 - 15:14

Вопрос "номер один": сколько полигонов в объекте сценария?

Вопрос "номер один с половиной": каковы размеры текстур объекта?

Вопрос "номер два": сколько объектов поставлено?

Вопрос "номер два с половиной": код оптимизировали?

Неоднократно обсуждались пути повышения ФПС. Это: минимизация размеров сценарных объектов, минимизация размеров текстур объектов, оптимизация кода сценария.

Если быть кратким, то если сделать "лесоразработку" с пеньками по 700 полигонов в каждом и текстурой 1024 на 1024 - 32 бита, то любая сцена станет медленной и печальной как слайд-шоу.

#3 Young Flyer

Young Flyer

    Новичок

  • Members
  • PipPipPipPip
  • 259 сообщений
    Reputation: 1

Отправлено 02 February 2004 - 15:36

Вопрос "номер один": сколько полигонов в объекте сценария?

Вопрос "номер один с половиной": каковы размеры текстур объекта?

Вопрос "номер два": сколько объектов поставлено?

Вопрос "номер два с половиной": код оптимизировали?

1. Полигонов штук 15, все АФКАДовские.
1.5. Полигоны сделаны в АФКАДовских дефолтных текстурах, размер не знаю.
Объект обтянут текстурой, размер которой 256 х 256. Пока сценарий содержал только объекты AFCADа, никаких тормозов не было.
2.Объектов типа "кусок забора" поставлено около 500, получилось ограждение длиной ок.3000 м.... да, многовато получается... А как же быть?
2.5. Один большой вопрос - что такое код и как его оптимизировать? Честно говоря, абсолютно не имею представления, о чем идет речь.

#4 Airman

Airman

    Модератор снов

  • Members
  • PipPipPipPipPipPip
  • 4517 сообщений
    Reputation: 18

Отправлено 02 February 2004 - 15:41

забор (от угла до угла) одним полигоном с повторяющейся текстурой. при прямоугльном заборе получим 4 полигона вместо 500

#5 Young Flyer

Young Flyer

    Новичок

  • Members
  • PipPipPipPip
  • 259 сообщений
    Reputation: 1

Отправлено 02 February 2004 - 15:52

забор (от угла до угла) одним полигоном с повторяющейся текстурой. при прямоугльном заборе получим 4 полигона вместо 500

Если я Вас правильно понял, необходимо создать забор с длиной 3000 м (длина одной стороны ограждения), и текстура должна быть одна, несмотря на то, что забор состоит из двух перемежающихся деталей?

#6 Alexander Belov

Alexander Belov

    Дока

  • VIPvip
  • PipPipPipPipPipPip
  • 4122 сообщений
    Reputation: 856

Отправлено 02 February 2004 - 15:58

2.Объектов типа "кусок забора" поставлено около 500, получилось ограждение длиной ок.3000 м.... да, многовато получается... А как же быть?
2.5. Один большой вопрос - что такое код и как его оптимизировать? Честно говоря, абсолютно не имею представления, о чем идет речь.

Полигоны имел в виду не AFCAD'овские, а полигоны (т.е. грани) объектов сценария. AFCAD'овские объекты практически не требуют ресурсов.

>> 500 объектов типа "кусок забора"

Тут-то и "порылась собака" - 500 объектов требуют 500 раз по 64 килобайта памяти. Плюс 500 раз была загружена текстура забора - еще по 64 килобайта памяти по самым скромным оценкам.

Как быть? Внимательно посмотреть, как сделан макрос "куска забора". Это текстовый файл, откройте его Notepad'ом. Все, что начитается с Poly, TexturedPoly, ShadedPoly и т.п. - и есть те полигоны, о которых я спрашивал. Посчитайте их, посмотрите сколько раз вызывается команда Bitmap или LoadBitmap - столько раз вы загружаете текстуру.

Вот этот код и надо оптимизировать. Поищите здесь в файлах статью Михаила Самохина - я ее выкладывал с разрешения автора. Там все подробно изложено.

#7 Airman

Airman

    Модератор снов

  • Members
  • PipPipPipPipPipPip
  • 4517 сообщений
    Reputation: 18

Отправлено 02 February 2004 - 16:01

Да и столб и плиту рисуем (удобнее половинку столба-плиту-половинку столба)
потом накладываем ее с повторением.
Толщина при такой длинне все равно не заметна. Как говорится "если мы моделим Матхеттен, нет смысла моделить дверные ручки"

#8 Young Flyer

Young Flyer

    Новичок

  • Members
  • PipPipPipPip
  • 259 сообщений
    Reputation: 1

Отправлено 02 February 2004 - 16:27

Да и столб и плиту рисуем (удобнее половинку столба-плиту-половинку столба)
потом накладываем ее с повторением.
Толщина при такой длинне все равно не заметна. Как говорится "если мы моделим Матхеттен, нет смысла моделить дверные ручки"

Вот тут я подошел к вопросам, которые достойны FAQ:
1.Как создаются текстуры?
2.От чего зависит размер текстур?
3.Почему файлы тестур имеют разное расширение (bmp, r8), в чем разница?
4.Как обтянуть полигон текcтурой, чтобы она повторялась, а не растягивалась по всей длине полигона?
5.Возможно ли сделать это в EOD ?

#9 Alexander Belov

Alexander Belov

    Дока

  • VIPvip
  • PipPipPipPipPipPip
  • 4122 сообщений
    Reputation: 856

Отправлено 02 February 2004 - 17:24

Текстура делается в любом графредакторе. Можно рекомендовать использовать в сценариях текстуры размером не более 256 х 256 пикселей, глубина цвета 8 бит (256 цветов).

Допустимо применение кратных по размеру текстур (256 х 256, 128 х 128, 64 х 64 и т.д.). Размер текстуры определяется самим разработчиком, только чем больше тектура, тем больше ресурсов компьютера она "отъедает".

Текстуры могут быть как классическим ВМР, так и RAW-формата (*.R8). R8-файлы использовались в МСФС98 и более ранних версиях, в МСФС2002 они остались сугубо исторически и в отдельных макросах.

Растянуть текстуру по полигону можно, но это придется делать штучно руками, редактируя SCASM-код макроса. Видимо, это можно сделать для BGLC-объекта, но это - не ко мне. ;)

Что касается инструментария, то по БОЛЬШОМУ счету все равно, кто будет генерировать исходный SCASM-код - EOD, FSDS или какой-либо другой редактор. Вопрос в подходе к разработке объекта и к последующему "ручному" редактированию.