Создание панелей и приборов — подробный мануал для начинающих? — Панели и приборы

Попробовал коэффициент подставить, из расчёта один галлон = 3,785 литра, работает.

Про плотность не забываем :) Пропишет кто-нить другой тип топлива и начнётся.

 

К автору вопроса: в аттаче все известные симу единицы измерения, надеюсь во многом поможет. В дополнение вот спичок констант из СДК, которыми оперирует сим при конвертации величин (тогда не будет расходжений):

 

#define FS_LAT_FACTOR 111130.555557

#define FS_LON_FACTOR 781874935307.40

#define RADIANS_TO_DEGREE_FACTOR (180.0/PI)

#define METER_FEET_FACTOR 3.28084

#define KILOMETER_NM_MILE_FACTOR 0.54

#define POUND_KILOGRAM_FACTOR 0.453592

#define METER_PER_SECOND_KNOT_FACTOR 1.944

#define GALLON_LITRE_FACTOR 3.785

#define INCH_HG_PSI_FACTOR (.4912)

10-FS2004_Units.zip

Спасибо за помощь. Временно завязал с расходомером, но взялся за радио высотомер. Хочу чтоб работал как в реале, со звуком. Единственное что начал его делать плоским. Ну да на то ком и нужен, чтоб потом стать блином. В картинках нет проблем. В 3Д максе могу нарисовать его, чуть ли не до винтиков. Возник вопрос — нужно чтобы флаг закрывал цифры при значении «-1». Вопрос — (A:DECISION HEIGHT, feet) вообще знает что можно выбрать отрицательно значение высоты принятия решения «-1».

По аналогии с другим прибором я ему тыкаю сие а он упорно становится на нулях:

 

 

<Element>
  <Position X=»98″ Y=»538″/>
     <Select>
        <Value>(A:DECISION HEIGHT, feet) -1 <</Value>
      <Case Value=»1″>
           <Image Name=»1.bmp» Luminous=»Yes» ImageSizes=»66,32,0,0″/>
      </Case>
   </Select>
</Element>

post-82833-0-12363800-1368023802.jpg


Edited by Ievgen

После некоторых тестов выявилось интересное наблюдение — самолет на земле, — радио высота должна быть «0». Но на разных крафтах она зная… На цесне к примеру 4 фута, а на командере — 6, а на Арбузе 321м вооще 10. Где собака по рылась? Или измерение производится от фюзеляжа или Кокпита?. Как не правильно…

Измерение проводится от излучателя радиовысотомера видимо. Он и не должен «0» показывать, ведь не на земле же валяется :)

Подозреваю, что измерение производится от некоторого строительного центра модели, и если модель не переделать, то внести поправку в показания прибора в соответствии с показаниями на земле, думаю труда составить не должно

Ну я где то так и подумал что высота привязана к Пивот поинту.
Вчера интереса ради посмотрел в самолете (реальном MD83). Так у КВС показывало на земле 0, а у второго около пяти футов. Хотя между антенной и землей и метра нет. Погрешности в показаниях прибора короче говоря. Уж очень он изношенный (у правака).

Вопрос — Скачал чудесный tutorxmlgau.zip и XML programming.zip Там говорится о логических вычислениях && и || (но к сожалению без примеров).У мну почему то работает только ||. А если использую && вместо || так прибор вообще не прорисовывается. Где умные книжки меня «разводят»?

Пробовал писать вместо знаков, — «or» и «and». Их он распознает как значение ноль для Value.

Второй вопрос. Мне надо придавать параметру L значение 0 или 1. Для этого я юзаю строчку <Cleak>1 (>L:Lamp Reset, bool) </Cleak>. Чёта не работает?!. Может я где, чего, не до читал/понял.

 

Может есть еще какие книги по этому поводу? Желательно с примерами. 

<Cleak>

Что это за слово ?

 

А если использую && вместо || так прибор вообще не прорисовывается

&& вместо && иногда помогает

Та то я ошибся когда набирал…
Подразумевалось — <Click>. Я с грамматикой в контрах…
В XML писал <Click>, так как было куда подсмотреть..


Edited by Ievgen

Эм на сколько я смог понять есть ограничение по количеству строк или букв? Или это опять гонит мой комп?


Edited by Ievgen

Мой «рекорд» размера прибора — 230 килобайт кода. Видимо, можно и больше. А вот длина строки ограничивается, это факт. ИМХО, строки длинее 256 знаков испоьзовать не стоит.

Фсё… Сдаюсь… «Тест не сдал»…

Вот часть кода, которую я никак не могу оживить. Значение его должно давать следующий результат:

1. Лампочка НЕ горит пока не «тыкнуть» в кнопку «Тест». (в реале так, — нужно запустить тест автопилота, и по окончании оного, сия лампочка остается гореть, пока ее не обресетить; временно хочу прикрутить к кнопке теста самого альтиметра)

2. Лампочка НЕ горит когда радио высота выше заданной.

3. Лампочка ГОРИТ пока не «тыкнуть» кнопку «Ресет».

4. Лампочка ГОРИТ когда высота ниже заданной но НЕ одресечена кнопкой «Ресет»

<Element>

<Position X=»95″ Y=»26″/>

<Select>

<Value>1 if { ((A:Radio height, feet) (A:DECISION HEIGHT, feet) <) (G:Var1) && if {((A:Radio height, feet) (A:DECISION HEIGHT, feet) >) Event»1 (>G:Var1)»} els {(A:Radio height, feet) (A:DECISION HEIGHT, feet) <} } els { 0 }</Value>

<Case Value=»1″>

<Image Name=»3on.bmp» Bright=»Yes» ImageSizes=»106,33,0,0″/>

</Case>

<Case Value=»0″>

<Image Name=»3off.bmp» Bright=»Yes» ImageSizes=»106,33,0,0″/>

</Case>

</Select>

</Element>

 

<!—===========================================Mause==============================================—>

<Mouse>

<!—======DH_Botton=====—>

<Area Left=»95″ Top=»26″ Width=»106″ Heigth=»33″>

<Cursor Type=»Hand»/>

<Click>0 (>G:Var1)

</Click>

</Area>

<!—===Test_Botton===—>

<Area Left=»184″ Top=»552″ Width=»79″ Height=»79″>

<Cursor Type=»Hand»/>

<Click>1 (>G:Var1)

</Click>

</Area>

Сей код не только не работает но почему то мышиную зону размазывает на весь прибор по вертикали.

Буду крайне признателен за любую помощь.


Edited by Ievgen

Коллега,

 

Перед условным оператором if{…} должно идти анализируемое выражение, а не результирующее действие:

 

 

 
<выражение>
 
if{ <действие, ЕСЛИ условие ВЫПОЛНЕНО> }
 
els{ <действие ИНАЧЕ - если условие НЕ ВЫПОЛНЕНО> }
 

 

Допустима только одна комбинация if-els, не может существовать комбинация if-els-els-(и так далее).

<!—===========================================Mause==============================================—>

<Mouse>

<!—======DH_Botton=====—>

<Area Left=»95″ Top=»26″ Width=»106″ Heigth=»33″>

<Cursor Type=»Hand»/>

…

Сей код не только не работает но почему то мышиную зону размазывает на весь прибор по вертикали.

Буду крайне признателен за любую помощь.

Height — Посему и «размазывало»…

Хорошо, С ИФом разобрался, но, тогда как это работает? Это кусок от цесны 208

 

<Script>

(A:CIRCUIT GENERAL PANEL ON, bool) if{ (A:FUEL TANK SELECTOR 1,ENUM) 0 == if{ 1 } els{ (A:FUEL TANK SELECTOR 1,ENUM) 2 == if{ (A:FUEL TANK LEFT MAIN LEVEL, percent) 15.05 < } els{ (A:FUEL TANK SELECTOR 1,ENUM) 3 == if{ (A:FUEL TANK RIGHT MAIN LEVEL, percent) 15.05 < } els{ 0 } } (L:Lamp Test, bool) || } els{ 0 }

</Script>

или тут другой закон действует?


Edited by Ievgen

Всем добрый вечер!

Вот у меня тут возник вопрос, какого разрешения делать битмап главной панели (КВС), имеется ввиду когда начинаешь рисовать?

75d22a55bb030103ed403345d8f4f1f1.jpg

 

ebe24dd195c17455ba76cc41efc69099.jpg

 

1a0d1d8d713acab15dddf025cd377b29.jpg

 

ebdaecc9b6db49b15361a75438ccfaa4.jpg

Ребят, вот я нарисовал эти приборы, с одной стороны вроде норм, а сдругой стороны просто ужас, как нарисовать нормально шкалу прибора?

Помогите плз!

Битмапы приборов лучше всего рисовать сразу под панель, т.е. чтоб смотрелись с панелью как единое целое. Приборы, имеющие однотонный фон, выглядят игрушечно. Блики, тени, объём — всё это в битмапе должно быть. В какой мере — дело вкуса, но битмап без объёма — это уровень FS2002. Опять же кому как нравится, кто-то поклонник арт-деко, лично мне вот больше по душе реализм. Поэтому для битмапов приборов использую фото. Беру качественную фотографию прибора (а чаще несколько), кромсаю её на составные части, всячески их редактирую, подчищаю, подгоняю. Вставляю в циферблат отрисованную в векторе шкалу, добавляю рельефность, тени и т.д. и т.п. Описать всё — значит повторять мануалы по фотошопу или корелу. Нет смысла делать этого здесь. Результат такой:

post-67360-0-09890400-1368743603_thumb.jpg

Для Ваших битмапов могу посоветовать:
— ободкам приборов добавить эффект «выпуклости», цифрам и рискам шкал — «впуклости» (например рельеф),
— сверху положить белый кружок прозрачностью 85-95% по размеру стекла прибора и местами хорошенько потереть его слабеньким мягким ластиком,
— между стеклом и шкалой вдоль ободка прибора положить тонюсенький прозрачный «полумесяц» тени.
А ещё лучше просто сделать всё по учебнику Александра Вишнякова (AVish). Там всё офигенно расписано. Единственное, что не совсем удачно предложено — это делать шкалу из букв «i». CorelDraw — шикарнейший и очень точный инструмент, поворачивать клоны линии можно с точностью до тысячной градуса, как угодно обрезать и импортировать в растр.
Да и ещё. Стоит поискать шрифты нормальные. Что-то вроде ГОСТ 26.008-85.


Edited by Pleischner

Спасибо, буду работать, только вот про белый кружок не понял)

И где можно прочитать про создание шкалы?


Edited by A320_Pilot

Всё тот же Александр Вишняков очень правильно сказал: пока ты новичок, ты ещё можешь писать мануалы. Заматереешь — всё. Тогда будешь разве что только развернутые ответы на вопросы давать. (Это, кстати, не упрёк, а чистая правда жизни!) Поэтому воспользуюсь моментом и напишу, как рисовать шкалы с точными углами наклона рисок.
Показываю на примере Corel Graphics 12. Просто потому что он у меня есть. (Меж прочим честный, лицензионный). Рисую шкалу для указателя курса УГА-1УК. Такой стоит, например, на Ан12 и Ан-30.
Процесс рисования основы для битмапа прибора опускаю, здесь речь только о создании точной шкалы. Поехали.

1. Копировать основу прибора в CorelDraw (в моём примере 12-ый), расположить по центру страницы (клавиша Р). Тремя вспомогательными окружностями обозначить размеры нужных нам рисок шкалы.

post-67360-0-00224300-1368787407_thumb.jpg

 

 

2. Делаем риски десятков градусов. Нарисовать (удерживая Ctrl) вертикальную прямую, позиционировать её по центру (Р). В свойствах линии (F12) задать ширину риски и форму её законцовки.

 

post-67360-0-52429200-1368787474_thumb.jpg

 

 

3. Комбинацией Alt+F8 открыть дополнительную панель «преобразование». Выбрать «поворот», задать поворот на -10° и нажать на «применить к копии» столько раз, сколько рисок нам надо.

 

post-67360-0-58354800-1368787493_thumb.jpg

 

 

4. Полученные лучики комбинировать. Крайние вспомогательные линии тоже комбинировать и поместить наверх. Выделить и то и другое, нажать кнопку «пересечение». Вырезанные в итоге линии в примере покрасил жёлтым.

 

post-67360-0-98537200-1368787506_thumb.jpg

 

 

5. Аналогично нарисовать риски делений в 2°, подобрав предварительно их ширину и форму законцовки. Для обрезки использовать наружную и среднюю вспомогательные линии.

 

post-67360-0-80052000-1368787522_thumb.jpg

 

 

6. Полученные риски сгруппировать, покрасить в нужный цвет (естественно не в чисто белый) и скопировать в растровый редактор.

 

post-67360-0-11934400-1368787535_thumb.jpg

 

 

7. Добавить рельефность, скорректировать цветность, резкость, подставить заранее обработанные цифры. Наложить тени, полутени. Продолжать редактирование до полного удовлетворения результатом. 😀

 

post-67360-0-57536200-1368787585_thumb.jpg

 

 

post-67360-0-54308500-1368787603.jpg
Такой способ строить шкалу нужен, когда в коде поворот стрелки задаётся в радианах, а не по координатам битмапа. Это, кстати, неимоверно облегчит жизнь тому, кто может быть когда-нибудь возмётся перерисовать Ваш прибор. И вообще. Если с самого начала делать всё чётко, педантично и методично — и процесс будет легче, и результат лучше.

Успехов удовольствия от работы!


Edited by Pleischner

Спасибо Вам огромное, а про белый кружок я вот не понял

С кружком так: прибор закрывает стекло, которое почти в любой кабине даёт блики. Хорошо, если у Вас есть качественно сделанное фото, а если рисуете битмап сами, то чтоб его «оживить» можно (как вариант) добавить такой вот блик стекла. Например индикатор-пульт от ДИСС-013-24ФК (см. скрин под спойлером). Делал я его так: ободок от фотографии, основа прибора — однотонная окружность. на ней шкала, выше — тень, ещё выше положил чисто белый круг размером с внутренний диаметр ободка. Кругу задал 93%-ную прозрачность — прибор «помутнел». Инструментом «ластик» (с очень мягкими настройками, т.е. стирает по чуть-чуть совсем, края размытые) стираю небольшую часть этого полупрозрачного круга. Получается такой частичный блик стекла. Ещё один такой же кружок подтираю ещё сильнее и кладу сверху. Выходит что-то типа водяного знака разной плотности: где-то гуще блик, где-то пожиже, а где-то вообще нет. Всё, прибор как живой. Главное — чтобы всё в меру, как говорил товарищ Неру. Можно и другими способами облагородить битмап. Ну, например, градиентной заливкой. Или мягкой кистью вручную подкрашивать. Короче говоря, это не просто так artwork’ом зовётся.

Короче, просто наложить белый круг на шкалу, дать прозрачность и подтереть ластиком?

<Element>
<Select>
<Value>(A:Radio height, feet) (A:DECISION HEIGHT, feet) < if { 1 (>G:Var1) } els { 0 (>G:Var1) } </Value>
</Select>
</Element>
<Element>
<Select>
<Value>(G:Var1) 1 == (L:lamp_reset, bool) 1 == && if { 1 (>G:Var2) } els { 0 (>G:Var2) } </Value>
</Select>
</Element>
<Element>
<Select>
<Value>(G:Var1) 0 == if { 1 (>L:lamp_reset, bool) } </Value>
</Select>
</Element>

<Element>
<Position X=»95″ Y=»26″/>
<Select>
<Value>(G:Var2) </Value>
<Case Value=»1″>
<Image Name=»3on.bmp» Bright=»Yes» ImageSizes=»106,33,0,0″/>
</Case>
<Case Value=»0″>
<Image Name=»3offa.bmp» Bright=»Yes» ImageSizes=»106,33,0,0″/>
</Case>
</Select>
</Element>

<!—===========================================Mause==============================================—>
<Mouse>
<!—===Test_Botton===—>
<Area Left=»184″ Top=»552″ Width=»79″ Height=»79″>
<Cursor Type=»Hand»/>
<Click>1 (>L:lamp_reset, bool)
</Click>
</Area>
<!—===========Lamp_res_Botton===========—>
<Area Left=»95″ Top=»26″ Width=»106″ Height=»33″>
<Cursor Type=»Hand»/>
<Click>0 (>L:lamp_reset, bool)
</Click>
</Area>

</Mouse>

 

А тут та что не так?

Как опыты показали проблема в этом — 

<Value>(A:Radio height, feet) (A:DECISION HEIGHT, feet) < if { 1 (>G:Var1) } els { 0 (>G:Var1) } </Value>

Эта строчка в любых условиях выдает на «if» фолс, но почему?

Нужно просто вывести обе величины — (A:Radio height, feet) и (A:DECISION HEIGHT, feet) на подсказку или в отдельный прибор-дебаггер. Посмотрим, какие они принимают значения, и все станет ясно.