Archived

This topic is now archived and is closed to further replies.

Rus

Ну .. фуф.. КПП

69 posts in this topic

Первоначальное сообщение от lial

Я просто экспирементировал, за отсутвием инфы, это версия еще в июне сделана... в таком виде он наиболее читабельней получился.

 

По Ил-62 конкретно у меня ничего нет, но по отдельным приборам может чего и быть. У меня достаточно большая коллекция фото, много качественных.

 

И вопрос. Вы каким механизмом указатель скольжения реализовали? Что то лохматит он, или это глюки скрина.

 

Степан

0

Share this post


Link to post
Share on other sites

всмысле как?

 

//////////////////////////////////////////////////////////////////////////

FLOAT64 FSAPI turn_coordinator_y_cb( PELEMENT_SLIDER pelement )

{

return 0 - (9.0 / 127) * fabs( pelement->source_var_y.var_value.n );

}

 

MAKE_SLIDER

(

PKP_slipball,

BMP_PKP_SLIPBALL,

PKP_LOCneedle_list,

PKP_fail,

IMAGE_USE_TRANSPARENCY | IMAGE_USE_ERASE |IMAGE_USE_LUMINOUS, 0,

206, 474,

TURN_COORDINATOR_BALL_POS, NULL, (167.0 - 24.0) / 255,

TURN_COORDINATOR_BALL_POS, turn_coordinator_y_cb, 1

)

 

а то что корявый, так это сим поганит его подкладку при уменьшении... может быть можно и лучше сделать, но если я сейчас буду заниматься такими мелочами, то Ил-62 свет увидит не раньше чем лет через 10 :)

 

А так все было с нуля отрисовано в corel Xara по фотке, т.к. на прямую ее трудно было использовать, размыта и мощный блик.

lial_il62.pkp.sliparea.bmp

0

Share this post


Link to post
Share on other sites
Первоначальное сообщение от lial

а то что корявый, так это сим поганит его подкладку при уменьшении...

 

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

 

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

В результате пришел к применению механизма SPRITE, который все эти проблемы решает.

 

Степан

0

Share this post


Link to post
Share on other sites

У меня вот какой вопрос в связи с КПП и самый главнй для меня.

Вопрос к дивэлоперам.

 

Каким образом удается сохранить объем на цилиндре-шарике шкале.

 

То есть у нас есть слой тень (от объектов выше шкалы), слой шкала и сам цилиндр/шарик, движется только шкала и шарик, тень (Multiply blend mode) над слоем шкала неподвижна, а сама шкала (блэнд слой COLOR над шариком объемным) - как это все в гагу вставляется?? ведь режими рэндеринга понятно не предусмотрены, как на слои нарезать то? Тут явно есть какой то секрет в самом СДК, буду признателен.

 

Спасибо,

Руслан.

0

Share this post


Link to post
Share on other sites

Отвечу обоим сразу подробнее... Степан я перепробовал кучу способов но остановился на этом...

я сделал так, пользуясь своим любимым, старым добрым KISS-принципом (Keep It Simple Stupid) в правельности, которого, давно убедился набив кучу шишек предварительно :rolleyes:

 

у меня есть выпуклая трубочка - подкладка, сделана просто статичной картинкой (выше приаттачена), шарик сделан тоже отдельной картинкой (приаттачен тут) и сделан как слайдер поверх нее, т.к. при таком мелком разрешении один фиг сольеться (KISS).

 

Спрайт имеет тут право на жизнь, но опять же огядываясь на KISS видим, что ну уж слишком много геммороя, ему ведь двигаться все равно по оси х по большей части, лишь немного искривляя траекторию, ну... а на что нам callback'и? чтобы немного корректировать значение токенов... по оси х берется значение токена TURN_COORDINATOR_BALL_POS, и без всяких модификаций управляет движением шарика в этой плоскости, а вот по оси у береться оно же, но в функции turn_coordinator_y_cb на основе его вычисляется другое значение -- отклонения вверх (при движении по дуге) в зависимости от удаления от центра в сторону.

 

0 - (9.0 / 127) * fabs( pelement->source_var_y.var_value.n );

 

где fabs( pelement->source_var_y.var_value.n ) -- модуль перемещения по оси х (напомню береться значение токена TURN_COORDINATOR_BALL_POS), т.к. нам фиолетово влево ушел шарик или вправо, он один фиг должен при этом перемещаться вверх.

 

(9.0 / 127) кооэфициент пропорциональности для интерполирования положения по оси у (секрет :cool: он движеться все же не по дуге а по ее хорде, но при таком разрешении, и малой кривизне дуги, не заметно, можно конечно рассчитать его положение на дуге, но использовать тяжеловесные тригонометрические функции ради одного двух пикселей погрешности, нет уж нафиг :) (КISS ;) ))

9.0 - расстояние в пикселях до апогея перемещения вверх.

127 - модуль 1/2ой дипазона изменения значения токена

 

0 - -- меняем знак на отрицательный (в экранной системе координат направление оси у вверх отрицательное как вы знаете)

 

вот и все ноу-хау....

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

 

P.S ну а если цилиндр конечно будет, то да, только спрайт.

lial_il62.pkp.slipball.bmp

0

Share this post


Link to post
Share on other sites

Понятно.

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

 

Степан

0

Share this post


Link to post
Share on other sites

я собсно вел речь не про указатель скольжения - а про авиагоризонт КПП и т.п. - про цилиндры и шарики там :cool: - прошу помощи!

 

Руслан

0

Share this post


Link to post
Share on other sites

Глобальным решением вращающегося шарика являются полупрозрачные маски, дающие эффект яркости. Тогда на маске шарик а двигаем пластину. Так сделано у Колесника, только как то полосато получилось. Но в приборах на Си я такой маски сделать не смог.

Поэтому приходится использовать всякие хитрости. В данном случае на указателе тангажа боковые части "шарика" двигать не надо, они одноцветные. Центральную цилиндрическую часть тоже целиком двигать не очень здорово. Я в таком случае (ПП-1ПМ на Тл-18) делаю полностью голубой шарик. Движется коричневая часть и шкала. Коричневая часть делается потемнее, чтобы меньше заметно было.

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

 

Это базовый битмап

post-41-1061211687_thumb.jpg

0

Share this post


Link to post
Share on other sites

А это шкала тангажа. Черный цвет - прозрачный. В вашем случае шкала должна захватывать только цилиндрическую часть "шарика"

Такие приемы дают сравнительно неплохой эффект.

post-41-1061211809_thumb.jpg

0

Share this post


Link to post
Share on other sites

Степан спасибо!

 

Начинаю понимать - ай да шайтаны.

0

Share this post


Link to post
Share on other sites

Степан, оригинально... :avtora: :)

 

Но я все же сделал на Си по той же методике что в ПКП Дмитрия... Просто наложил приатаченый файл

вот так вот над шкалой тангажа

MAKE_STATIC

(

PKP_pitchalpha,

BMP_PKP_PITCH_ALPHA,

PKP_pitchdirector_list,

PKP_fail,

IMAGE_USE_TRANSPARENCY | IMAGE_USE_ALPHA,

0,

57, 89

)

 

единственно я сначала из фотошопа сохранил его как tga, открыл его в ImageTool и потом уже из него сохранил как bmp, иначе пр сохранении напрямую из фотошопа теряеться альфа... а ступеньки, имхо у Дмитрия сильно жирно оно сделано, я сделал побелее, ступеньки есть, но малозаметны.

 

Вообщем смотрите... сравнивайте...

lial_il62.pkp.pitch_alpha.bmp

0

Share this post


Link to post
Share on other sites
Первоначальное сообщение от lial

 

единственно я сначала из фотошопа сохранил его как tga, открыл его в ImageTool и потом уже из него сохранил как bmp, иначе пр сохранении напрямую из фотошопа теряеться альфа... а ступеньки, имхо у Дмитрия сильно жирно оно сделано, я сделал побелее, ступеньки есть, но малозаметны.

 

Так вставлять альфу я умею, и сохранять из фотошопа умею. Я не понимаю, как ее рисовать в фотошопе.

 

Степан

0

Share this post


Link to post
Share on other sites

в смысле создать?

 

В окне Channels ткнуть на свойства (черный треугольник) и выбрать новый канал. Вот и все.

0

Share this post


Link to post
Share on other sites
Первоначальное сообщение от Russos

в смысле создать?

 

В окне Channels ткнуть на свойства (черный треугольник) и выбрать новый канал. Вот и все.

 

И что в этом канале рисовать? Как полупрозрачность получить не понимаю.

 

 

Степан

0

Share this post


Link to post
Share on other sites

Всем привет!

 

Если кому интересно.

 

Поверхность самого диска рифленая, по всей видимости для того, что бы не бликовала. Рифление идет с левого верха вниз вправо. Шаг ~0,3мм. Марки вдавленные с овальными краями и залиты краской.

 

Цвета: верх - темно голубой, почти синий; низ - темно-темно-коричневый, почти черный. Смотрел на ноых приборах, 95-97г.в.

 

Удачи!

0

Share this post


Link to post
Share on other sites

Всем привет еще раз!

 

Прибор освещается ровным красным светом из четырех бобышек, расположенных сверху прибора. Такое освещение почти у всех приборов.

 

Хотелось бы иметь отдельно освещение приборов и отдельно освещение кабины.

 

Удачи!

0

Share this post


Link to post
Share on other sites
Первоначальное сообщение от Gritsevsky

И что в этом канале рисовать? Как полупрозрачность получить не понимаю.

 

э.. ну с масками работал? Это примерно тоже самое. Например если ты выделишь на картинке область и дашь команду скрыть все, кроме области, то ты получишь черную маску с белым пятном. Белое пятно - эо то, что видишь. Если посмотреть на каналы, то ты увидишь дополнительнй канал - твоя маска.

 

А так ты создаешь не маска а отдельный альфа-канал и руководствуешься теми принципами, что и с маской. Тем темнее она закрашена, тем менее видно на картинке.

0

Share this post


Link to post
Share on other sites
Первоначальное сообщение от Russos

э.. ну с масками работал? Это примерно тоже самое. Например если ты выделишь на картинке область и дашь команду скрыть все, кроме области, то ты получишь черную маску с белым пятном. Белое пятно - эо то, что видишь. Если посмотреть на каналы, то ты увидишь дополнительнй канал - твоя маска.

 

А так ты создаешь не маска а отдельный альфа-канал и руководствуешься теми принципами, что и с маской. Тем темнее она закрашена, тем менее видно на картинке.

 

С масками то я работаю. Но маски бывают разных типов, яркость, цветность и т.д.

 

Ладно, не буду приставать, поэкспериментирую на досуге, спасибо за информацию.

 

Степан

0

Share this post


Link to post
Share on other sites

открой мой файл приаттаченый в ImageTool

и выбери View->Alpha

надеюсь идея станет сразу понятна... но если что поясню...

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

Тут просто все наоборот в отличии от обычных битмапов, белый цвет прозрачен.

0

Share this post


Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.