Всё про SDK — Microsoft Flight Simulator 2020

В 24.08.2020 в 20:44, Kirill Konovalov пишет:

МСФС2020(и Препар4-5 чуть ранее) вводят совершенно другое видение этого. То, с которым в целом вся игровая индустрия живет уже много-много лет. примерно полтора десятилетия, наверное. — Substance или Physical Based Rendering.
И связанно это с тем, что сегодня видеокартам гораздо легче обрабатывать полигоны, нежели текстуры.
И все начинает работать совершенно иначе.

В примере из СДК для нового Сима отлично показано, как это все работает. А именно: При таком подходе к материалам и к текстурированию заливка цветом, и маппинг под неё например того-же фюзеляжа не играет никакой роли. Там весь фюзеляж Даймонда из примера укладывается по длине на 1 лист. А граница между белым брюхом и синим верхом у него пикселями идет абсолютно вся такими крупными, что их видно за версту. Но в симе это выглядит не так, правда ведь? Почему? Потому что граница эта прикрыта полигонами. Вторым слоем, который создает как-бы декаль. Граница по нему между синим и белым сделана по границе полигонов в силу этого она идеально ровная и масштабируемая на любом зуме. Точно такими-же декалями на самолете сделаны все выштамповки, заклепки, грязь, техничка и прочая мелкая деталировка.(Похожим методом в предшествующих ФС сделаны текстуры NNumber) В симе есть специальный тип материала, который таким декалям назначается, и «прикрепляет» их к основной геометрии, что-б они не висели в воздухе рядом.

Т.е. вся мелкая деталировка сделана не текстурами а геометрией! Да, даже заклепки. Именно поэтому сим такой быстрый в целом. И не жрет так много ресурсов. Если-бы они такую деталировку делали текстурами- о такой производительности как у нас можно было-бы не мечтать даже через пять лет.

НО! У этого всего есть обратная сторона.
По сути теперь для каждой ливреи нужно делать свою модель. Либо делать нечто усредненное. Просто взять и покрасить любой самолет во что хочешь теперь будет нельзя. Вам нужен для этого моделлер. И сорсы модели.

Вы скажете что «Вот, А320-же перекрашивают!!» А вы видели как они это делают? Они красят эту вот подложку с низким разрешением. Качество этого ужасно. И лучше оно не будет, просто потому что оно не рассчитано что-б его так красили.

Такие Пироги, господа. За каждую заклепку и идеально ровные линии расшивки и читабельность всех технических надписей приходится платить. Вот таким вот образом.

P.S. Добавлено. Решил добавить скриншот и показать наглядно. Вот. Граница синего и белого и «Декаль» белая, которую я отодвинул выше, что-бы эту самую границу увидеть. Обратите внимание на Декаль «Не лапать» — она сделана точно также.

2020-08-24 (1).jpg

Я так понимаю что с сценариями та же история ? Разметка это теперь будут полигоны а не просто текстуры ?


Edited by Oceanmachine90

21 час назад, Oceanmachine90 пишет:

Я так понимаю что с сценариями та же история ? Разметка это теперь будут полигоны а не просто текстуры ?

Они вообще-то и раньше ими были в навороченных сценах.

Что то у меня стал вылетать сим на рабочий стол именно через пару секунд после нажатия на «билд пакадж» своих проектов, после последнего обновления и фикса, раньше такого не было вообще, при простых полётах не вылетает, попробовал взять заготовку «SimpleScenery» ни чего в ней не меняя, всё в порядке, доходит до консоли, её можно закрыть и нет вылетов, что то разработчики там поменяли.

Может знающие люди подскажут на что обратить внимание!


Edited by Kirill_K

20 часов назад, Kirill_K пишет:

Что то у меня стал вылетать сим на рабочий стол именно через пару секунд после нажатия на «билд пакадж» своих проектов, после последнего обновления и фикса, раньше такого не было вообще, при простых полётах не вылетает, попробовал взять заготовку «SimpleScenery» ни чего в ней не меняя, всё в порядке, доходит до консоли, её можно закрыть и нет вылетов, что то разработчики там поменяли.

Может знающие люди подскажут на что обратить внимание!

Мне помогло вычистить директории, кроме исходников, то есть пересобрать с нуля. После этого собирает без проблем.

22 часа назад, Kirill_K пишет:

Что то у меня стал вылетать сим на рабочий стол именно через пару секунд после нажатия на «билд пакадж» своих проектов, после последнего обновления и фикса, раньше такого не было вообще, при простых полётах не вылетает, попробовал взять заготовку «SimpleScenery» ни чего в ней не меняя, всё в порядке, доходит до консоли, её можно закрыть и нет вылетов, что то разработчики там поменяли.

Может знающие люди подскажут на что обратить внимание!

удали вот эту папку в директории проекта. Это типа кэш. Поможет…._PackageInt

Пробовал, пока что ни как..

Вообщем разобрался, переконвертировав более новой версией утилиты свои объекты для данной сцены вылеты прекратились.

Microsoft-Flight-Simulator-Screenshot-20

16 часов назад, Stooges пишет:

 

какой страшненький самолет :) Сделан хорошо, но сам по себе уродлив :)


Edited by Wonderboy

убран оверквотинг

Кто-нибудь может объяснить как анимируется амортизация? Какой ивент за это отвечает?

Не Event, а переменная симулятора (Sim Variable). Например на странице Simulation Variables в разделе Aircraft Landing Gear Data есть переменные, которые формирует симулятор.
В примере DA62 в модели есть анимация выпуска и сжатия амортизатора (в конце анимации) передней стойки. В xml-файле настройка анимации через шаблоны ASOBO_GEAR_xxx_Template, которые в файле %LOCALAPPDATA%PackagesMicrosoft.FlightSimulator_8wekyb3d8bbweLocalCachePackagesOfficialOneStorefs-base-aircraft-commonModelBehaviorDefsAsoboExterior.xml используют переменную GEAR ANIMATION POSITION для каждой опоры шасси.


Edited by Prepar3DGuy

2 часа назад, Prepar3DGuy пишет:

Не Event, а переменная симулятора (Sim Variable). Например на странице Simulation Variables в разделе Aircraft Landing Gear Data есть переменные, которые формирует симулятор.
В примере DA62 в модели есть анимация выпуска и сжатия амортизатора (в конце анимации) передней стойки. В xml-файле настройка анимации через шаблоны ASOBO_GEAR_xxx_Template, которые в файле %LOCALAPPDATA%PackagesMicrosoft.FlightSimulator_8wekyb3d8bbweLocalCachePackagesOfficialOneStorefs-base-aircraft-commonModelBehaviorDefsAsoboExterior.xml используют переменную GEAR ANIMATION POSITION для каждой опоры шасси.

У меня нету такого файла. Можете поделиться , если возможно?

Все еще не понимаю, как сим узнает что ,например, с 100 по 110 ключ анимации происходит сжатие амортизатора.  Вот стандартный код анимации, что в нем надо изменить? 

Скрытый текст

<PartInfo>
        <Name>c_gear</Name>
        <AnimLength>100</AnimLength>
        <Animation>
            <Parameter>
                <Sim>
                    <Variable>GEAR ANIMATION POSITION:0</Variable>
                    <Units>keyframe</Units>            
                </Sim>
            </Parameter>
        </Animation>
    </PartInfo>

 

Если с помощью программы SimVar Watcher из состава SDK посмотреть значения переменных GEAR ANIMATION POSITION:0 (1, 2) с единицами измерения percent для какого-либо самолета, то можно заметить. Что 0% — полностью убранные шасси, 50% — выпущенные шасси, но не обжатые амортизаторы, 100% — полностью обжатые амортизаторы. 
При описании привязки анимации в xml-файле вам нужно значение переменной, которую вы выбрали в качестве параметра (Variable) и указанными единицами измерения (Units), пересчитать в длину анимации, заданную вами в AnimLength. То есть параметр с учетом преобразований должен принимать значение от 0 до AnimLength.

Если в вашем случае в анимации модели: 0 — шасси убраны, 100 — выпущены, 110 — полность обжаты, то нужно с помощью секции <Code> выполнить пересчет переменной симулятора в номер кадра анимации.

Скрытый текст

<PartInfo>
    <Name>c_gear</Name>
    <AnimLength>110</AnimLength>
    <Animation>
        <Parameter>
			<Code>
				(A:GEAR ANIMATION POSITION:0 , percent) 50. &gt; if {(A:GEAR ANIMATION POSITION:0 , percent) 2 * } els{ 100 (A:GEAR ANIMATION POSITION:0 , percent) 50. - 0.2 * + } 
			</Code>
        </Parameter>
    </Animation>
</PartInfo>

 

Параметры амортизаторов стоек шасси (Static Compression, Ratio of Maximum compression to static compression, Damping Ratio) задаются в разделе Contact Points файла flight_model.cfg.

21 час назад, Stooges пишет:

У меня нету такого файла. Можете поделиться , если возможно?

Не может такого быть. Если у вас версия из Steam или вы установили в другую директорию, то поищите в ней по имени файла, ещё файл LandingGear.xml вам полезным будет как пример. Можно их как шаблоны использовать, чтобы не писать повторяющийся код.

18 минут назад, Prepar3DGuy пишет:

Не может такого быть. Если у вас версия из Steam или вы установили в другую директорию, то поищите в ней по имени файла, ещё файл LandingGear.xml вам полезным будет как пример. Можно их как шаблоны использовать, чтобы не писать повторяющийся код.

Спасибо, попробую. Мне казалось этот файл асобовский и он скрыт, поэтому я его не нашел.

13 часов назад, Prepar3DGuy пишет:

Не может такого быть. Если у вас версия из Steam или вы установили в другую директорию, то поищите в ней по имени файла, ещё файл LandingGear.xml вам полезным будет как пример. Можно их как шаблоны использовать, чтобы не писать повторяющийся код.

Спасибо, заработало. 

А можно в SDK редактировать костомные сценарии? Мне бы хотелось добавить осевые огни  ВПП. Эта функция назначается в свойствах полосы. Без XML наверное к этим свойствам не добраться.

2 минуты назад, caelum пишет:

А можно в SDK редактировать костомные сценарии? Мне бы хотелось добавить осевые огни  ВПП. Эта функция назначается в свойствах полосы. Без XML наверное к этим свойствам не добраться.

Дефолтные сцены можно исправить, создав свой кастомный порт и сделав в нём только полосу, в настройках порта добавив галочку на delete runways. Как с кастомными сценами это работать будет — не знаю. Может получится как с Инсбруком, где сцена от орбх глючит со сценой от Асобо. 

2 минуты назад, desmo пишет:

Дефолтные сцены можно исправить, создав свой кастомный порт и сделав в нём только полосу, в настройках порта добавив галочку на delete runways. Как с кастомными сценами это работать будет — не знаю. Может получится как с Инсбруком, где сцена от орбх глючит со сценой от Асобо. 

Спасибо.

Подскажите как сделать ночную лампу типа «Obstacle Lights» которая на крышах домов, кранах и прочем расположена, красного цвета, вот только что бы она была видна из далека?

15 часов назад, desmo пишет:

Дефолтные сцены можно исправить, создав свой кастомный порт и сделав в нём только полосу, в настройках порта добавив галочку на delete runways. Как с кастомными сценами это работать будет — не знаю. Может получится как с Инсбруком, где сцена от орбх глючит со сценой от Асобо. 

А как там она глючит? Не замечал просто

23 минуты назад, ppga пишет:

А как там она глючит? Не замечал просто

Может это есть не всех, но баг частый. У меня там была какая-то яма на полосе, что самолёт подпрыгивал как на трамплине при взлёте и посадке. 

В симе предусмотрено двух килевое оперение? Или просто делать обычное но с удвоенной площадью? Но это ведь костыль…

3 часа назад, Stooges пишет:

В симе предусмотрено двух килевое оперение? Или просто делать обычное но с удвоенной площадью? Но это ведь костыль…

Если основываться на математической модели, описанной в разделе Flight Model SDK, то настроек для явной поддержки двухкилевого и V-образного оперения самолетов не предусмотрено. Приведенные в разделах Aerodynamic translational forces in stability frame и Aerodynamic torques in stability frame выражения для расчета аэродинамических сил и моментов используют обобщенные выражения, зависящие от эквивалентного угла отклонения руля направления (delta_r) и с определенными допущениями могут использоваться для двухкилевого вертикального оперения. А вот в разделе, который посвящен новому подходу к модели движения в симуляторе, указано про одно вертикальное оперение с рулем направления. Поэтому новая модель с использованием нормализации аэродинамических коэффициентов с учетом геометрии может давать неадекватные результаты для двухкилевого вертикального оперения. В частном случае отключение одного из двигателей будет некорректно имитировать влияние несимметричного обтекания оперения.

Да — костыль, но при определенных условиях он допустим. Возможно стоит написать разработчикам с просьбой добавить нужный функционал.