Scorpio9999, огромное спасибо за идею, вижу ее интересной, единственное (заранее прошу прощение) совсем не понял — что Вы имели ввиду под «линкованием». Честно говоря, я с анимацией человек совсем новый…
И еще — если я правильно понял, такое решение будет удобным, если мне нужно будет реализовать на земле поворот крыла, а в воздухе смещение телеги?
Scorpio9999
05.05.2010 в 04:10
Scorpio9999, огромное спасибо за идею, вижу ее интересной, единственное (заранее прошу прощение) совсем не понял — что Вы имели ввиду под «линкованием». Честно говоря, я с анимацией человек совсем новый…
И еще — если я правильно понял, такое решение будет удобным, если мне нужно будет реализовать на земле поворот крыла, а в воздухе смещение телеги?
Линкование покажу на примере. Суть в том, что поворачивая или сдвигая деталь «родитель» автоматически поворачивается или сдвигается деталь «потомок» относительно пивота «родителя». Представьте своё плечо и предплечье. Сгибая плечевой сустав Вы автоматически за плечом тянете и поворачиваете предплечье (если не двигать локтевым суставом). На первой картинке создаём два объекта: кубик и цилиндр. Выделяем объект «потомок» и давим третью кнопку слева в панели инструментов (она выделена на второй картинке).
Далее либо сразу кликаем мышкой на объект «родитель» либо выбираем его из списка (так меньше ошибок можно совершить). В списке собственно кликаем на имя объекта и нажимаем кнопку Link.
Теперь лучше лишний раз кликнуть на стрелку (5-я слева кнопка), чтобы не прикрутить что-нибудь в придачу.
Для проверки созданной иерархии открываем список объектов и включаем опцию Display Subtree.
Результат будет виден в виде ступенчатого списка деталей. Самый левый это «родитель», правее все «потомки» вплоть до пра-пра-пра… внуков.
А вот различие поведения в воздухе и на земле надо тестировать. Прям сходу не скажу. Возможно, что в теле кода анимации надо будет устраивать проверку «земля-воздух». Но вообще-то тут свою непоследнюю роль должны сыграть точки контакта и параметры амортизаторов.
Stoz
05.05.2010 в 10:35
Scorpio9999, искренне благодарю за информацию… вечером обязательно попробую. Насчет различия поведения в воздухе и на земле я уже понял, что нужно будет уже писать в коде необходимые условия. Интересовало следующее:
Итак, что получается:
Если я Вас правильно понял, то можно внутри узла подвески телеги к крылу спрятать два маленьких кубика. К этим кубикам прилинковать все детали телеги за исключением рук пилота. Один кубик будет для поворота тележки вверх-вниз, другой для поворота телеги влево-вправо. К этим двум кубикам поставить еще два (для крыла) прилинковать к ним все части крыла, тоже анимировать (вверх-вниз, влево-вправо). А затем в коде уже прописывать условия какая анимация будет проигрываться в зависимости от того — где аппарат находится. Я знаю, что это возможно, потому как видел в мотодельтаплане от ЛАГО такую штуку — в полете нельзя осуществлять горизонтальные повороты.
Не вытерпел.. уже попробовал линки… — все стало более чем понятно с этим делом. А симулятор эту фишку поймет?
Сразу же здесь еще вопрос: предположим, у меня промежуток из 100 кадров. Анимация делается одновременно для всех деталей в этом промежутке (т.е. сразу все возможные действия совершаются одновременно — и телега поворачивается, и крыло (во всех 4х направлениях), и руки пилота), или нужно разбивать этот промежуток на отрезки (т.е. крыло анимируется в промежутке от 0 до 49 во всех 4х направлениях, телега анимируется в промежутке от 50 до 100 также во всех направлениях)?
Scorpio9999
06.05.2010 в 03:13
К этим кубикам прилинковать все детали телеги за исключением рук пилота.
Плечи рук прилинковать к туловищу, предплечья к плечам. кисти к предплечьям. Голову прилинковать к туловищу (надеюсь виртуальный пилот будет ей крутить в сторону поворота и вверх-вниз).
Один кубик будет для поворота тележки вверх-вниз, другой для поворота телеги влево-вправо.
Да.
К этим двум кубикам поставить еще два (для крыла) прилинковать к ним все части крыла, тоже анимировать (вверх-вниз, влево-вправо). А затем в коде уже прописывать условия какая анимация будет проигрываться в зависимости от того — где аппарат находится. Я знаю, что это возможно, потому как видел в мотодельтаплане от ЛАГО такую штуку — в полете нельзя осуществлять горизонтальные повороты.
Думаю что ещё пара кубиков будет не нужна. Возможно многое, пока не упрётесь в ограничения компилятора. Об этом в других темах написано.
А симулятор эту фишку поймет?
А я для симулятора и пишу вроде как. Кстати, под какую версию пепелац с гравицапой? А чтобы отпали сомнения прикрепляю картинку из своего творчества. Это работает даже на FS2004.
Сразу же здесь еще вопрос: предположим, у меня промежуток из 100 кадров. Анимация делается одновременно для всех деталей в этом промежутке (т.е. сразу все возможные действия совершаются одновременно — и телега поворачивается, и крыло (во всех 4х направлениях), и руки пилота), или нужно разбивать этот промежуток на отрезки (т.е. крыло анимируется в промежутке от 0 до 49 во всех 4х направлениях, телега анимируется в промежутке от 50 до 100 также во всех направлениях)?
Длина анимации должна соответствовать SDK. Если положено уложиться между кадрами 0-50 (тумблеры кажись), значит именно так надо делать. Если между 0-200 (стойки шасси), то именно между ними. А вот если прописываете кастомную анимацию, то ограничение у Вас 0-1024. Больше низзя. Т.е. двигая ползунок анимации Вы увидите одновременную работу всех анимированных деталей, а не одну за другой.
Stoz
06.05.2010 в 03:58
Спасибо. Я так полагаю, что анимация и будет кастомной. Голову пилота поворачивать — планирую и постараюсь сделать. МДП делаю для 2004 симулятора.
Scorpio9999
06.05.2010 в 06:09
Спасибо. Я так полагаю, что анимация и будет кастомной. Голову пилота поворачивать — планирую и постараюсь сделать. МДП делаю для 2004 симулятора.
Я спрашивал про версию сима, чтобы определится с анимацией рук. В FSX там несколько по-другому. А так из примера в SDK можете выдернуть человечка из самоля и изучать его телодвижения. У него насколько помню одна рука на РУСе, другая на РУДе. Вам только углы поворота менять придётся, ну и наверное ещё один кубик в плече для крена, хотя сразу трудно сказать.
Кстати, я могу попробовать посмотреть в ACM или типа него дефолтный мотодельтаплан из FSX на предмет что и как там шевелится в анимации. Я всё думаю тележка относительно крыла или крыло относительно тележки.
o1399xa
07.05.2010 в 10:40
Чертовщина какая-то. Вообще-то после c_gear может идти любой суффикс кроме зарезервированного слова. Я бы на вашем месте проверил длину этой анимации в кадрах. Насколько я припоминаю шасси имеют 200 кадров максимум. Как крайняя мера убить анимацию начиная с последнего кадра и до первого и анимировать снова. Без скринов с анимацией трудно поставить диагноз.
Спасибо. Убил все строю по одной детали. Пока получилсь одна створка бьюсь со второй.
Stoz
07.05.2010 в 10:56
А так из примера в SDK можете выдернуть человечка из самоля и изучать его телодвижения. У него насколько помню одна рука на РУСе, другая на РУДе.
Ну, здесь, все-таки движения рук и ног пилота будут отличаться. В общем, посмотрим — что получится.
Drum27
26.07.2010 в 10:03
Товарищи разработчики.
А как сделать чтобы прибором можно было управлять из ВК. Например кремальерой высотомера. Т.е. есть гау прибор, в котором кремальера, естественно, вертит стрелочки и есть она же трехмерная в ВК с анимацией, но вот как управлять высотомером?
SimmakeR
31.08.2010 в 19:13
Доброго времени суток.
1. Делаю анимацию шасси передней стойки. Стойка не управляемая т.е. сама ездит куда ей захочется.
Вопрос:
как сделать чтоб колесо, например в повороте если остановиться, тоже замерло в том положении?
2. Не могу найти параметр для сжатия передней стойки, когда на земле пустой, в воздухе и когда полное сжатие.
Kirill Konovalov
01.09.2010 в 12:28
Stoz
В Х-е исходя из поведения модели в симе(мдл не ковырял, но по поведению-так) — Тележка — родитель, а крыло потомок.
И надо делать так-же я думаю, иначе в полете мы получим эффект такого плана что камера будет привязана к крылу, а пилот будет чисто визуально наклонять не крыло а телегу вместе с собой. Эффект будет странновато выглядеть. — Все-же предполагается что мы смотрим глазами пилота, даже снаружи, а не камерой на крыле.
Если этот вопрос ещё кого волнует.
Drum27
Прибором управлять из ВК можно только если намапить на трехмерные элементы управления — сам прибор. Тут где-то в статьях это было- посмотрите подробнее. Либо делать кастомную анимацию с обработкой действий мыши, но тут нужен будет исходник прибора, что-бы «завязать» одно с другим.
SimmakeR
Самоорентируемое колесо по идее прописывается в айркафт.кфг и после этого обычное C_Wheel будет так работать. Хотя сам дело с самоорентирующимися не имел- не уверен.
Сжатие и выпуск шасси одно и то-же- это одна деталь и одна переменная. Кадры: 0 убрано 100 выпущенно 150 сжато на стоянке 200 полностью сжато. Повязано это дело на переменные выпуска шасси. Т.е. для выпуска и сжатия одни и те-же переменные.
SimmakeR
01.09.2010 в 13:41
SimmakeR
Самоорентируемое колесо по идее прописывается в айркафт.кфг и после этого обычное C_Wheel будет так работать. Хотя сам дело с самоорентирующимися не имел- не уверен.
Сжатие и выпуск шасси одно и то-же- это одна деталь и одна переменная. Кадры: 0 убрано 100 выпущенно 150 сжато на стоянке 200 полностью сжато. Повязано это дело на переменные выпуска шасси. Т.е. для выпуска и сжатия одни и те-же переменные.
Спасибо. На счет сжатия: если делать деталь с_wheelwell, то Вы описали праильно на счет сжатия, но эта деталь пропадает когда шасси запущены, а у меня шасси без створок и их видно в запущенном состоянии и переменная из сдк на выпуск шасси не работает на сжатие. Должна быть другая переменная.
Virpil
05.03.2011 в 02:35
Обьясните плиз такую тему, почему мой мэйкМДЛ не понимает его же родные ключи стоковой анимации SDK, такие как: prop#_still, prop#_slow, prop#_blurred? Сама модель конвертится, но в output ругается на анимацию детали с такими названиями. Пробовал назвать перед конвертацией в .Х как-нить по другому, например c_tire_blurred — ошибки на выходе МДЛ нет, но и анимации в симе нет, т.е шасси тоже не крутятся. Нормально в симе выходит только обжатие стоек вместе с работой рычагов подвески и выпуск-запуск. Кстати человек постом выше спрашивал про обжатие. Похоже у него иррархия не верно выстроена — C_Wheelwell и С_Wheel — это разные ключи. В СДК они описаны. Приведу свой вариант иеррархии левой стойки (скрин). Она тоже без створок и видна в полете. Отвлекся. Ключи типа rotor_### мейкМДЛ тоже не понимает. Че делать? Фреймовую на винты вешать? Если да — киньте кусок хмл-кода для MakeMDL.Parts.xml для анимации винтов вертолета и шасси на пробеге. ФС9.
З.Ы. Где-то на буржуйском форуме разрабов раскопал код крутки крыла модели при болтанке для вставки в MakeMDL.Parts.xml. Мож кому понадобится. Сам не тестил.
Spoiler
FS9 Animations, the new way using XML code.
Now I know that there will be freeware and commercial developers out there that will exploit this code and credit themselves for developing it, and so called «be the first», its a shame that it happens, but I guess thats the nature of the beast these days. If you do use this code directly, all I ask is for a small credit given to me in your credits list .
First off, make sure you can run the new FS2004 MakeMdl with Gmax without any problems, and you can compile your current project with it. Secondly, if you want to develop your own code, then you will need to get the panel SDK, as it has all the reference you need to do the XML coding as the animation coding use the same basic structures and variables. This code can be pasted directly into the makemdl.xml file.
Thirdly, this is not a coding tutorial. I feel you need to try and learn the coding yourself, as you will be a better coder overall if you do. This is just going to give you an example, and explain certain things as well as what needs to be done with GMax.
Now off to the races.
Here’s the code I use for SGA’s DC10-30. If you haven’t seen the wing flexing, go get the 10 and turn on turbulence and watch those wings do their job .
Basically, the code watches the speed of the aircraft in the Z axis (A:VELOCITY BODY Z, knots), if the aircraft is on the ground or not (A:SIM ON GROUND, bool), and what the current G-Force is (A:G FORCE, gforce).
I have set it up for the following conditions.
-While the aircraft is on the ground and below 100kts. The wings will only flex due to GForces, so if you go off the taxiway or runway, they will start bouncing.
-While the aircraft is on the ground and between 100kts and 160kts. The wings will start «bending» up the higher the velocity and will be flexed up in cruise position at 160 kts. Again, GForces will cause the wings to bounce. Of course slowing down in this range will cause the wings to flex down or relax to resting position.
-While the aircraft is in the air and between 100kts and 160kts. The wings will flex according to velocity and GForces will cause bouncing affects.
-While the aircraft is on the ground or in the air above 160kts. The wings will remain in «cruise» flexed position, with gforces causing the wings to bounce.
-While the aircraft is on the ground. The GForce affect on the flex is reversed to the affect while in the air.
Okay, some things I feel should be explained about the code.
1. If you need to use the less than sign «<» in your code, then you will need to put in < instead. (Took me a bit to figure out why my code would not be compiled into the mdl.) If you need the «>» then put in > instead.
2. In order to see the effects of GForces, I had to multiply the GForce number by a factor of 30.
3. When transitioning through different conditions, you have to make sure that the resulting number is the same as the value that existed in the previous condition to create a smooth transfer. So if you start changing the speeds above everything has to end and start with the same result.
Now onto Gmax. First off, as stated before make sure you add the above code to the makemdl.xml file. If you had to rename makemdl because you are using an inserted program like modelcommander then the makemdl portion of the xml file name must match the makemdl portion of the makemdl.exe file name.
If you have a current project, and have assigned wing flexing to the gear compression then your most of the way there. Thats the reason I included the second code part, so as to deal with this «reversed» animation of the wing flex.
Onwards and upwards……
Now you have probably split your wing into 2 or more sections. I’m going to use the DC10’s right wing as an example. Each wing was divided into 3 sections, inboard, middle and outboard. The flex animation was not put on the inboard section obviously.
I first selected the middle wing section that was assigned to the gear compression, (you may have a linked set of parts to this wing, leave them in.) and I renamed the part to fwt_wingflex_rev_rmiddle. I turned on Animation Key edit, and moved the first key to position 0, then grabbed the last key and moved it over to positon 200 (I used the 200 range to make the animation smoother).
I then selected the outboard wing section and renamed it to fwt_wingflex_rev_router and repeated the steps above.
Now, the current wing flex will have the relaxed wing position at key 200 and the cruise flex position at key 0 (hence the reversed animation code above). We need to increase this flex range so we can have turbulence effects happening as normal flexed positions. With the code above, cruise flex position is assumed to be at animation key position 40 and the relaxed wing position will be at key 160. The simplest thing here to do is increase the animation of the wing flex so the MAX up wing flex position is at key 0 and the the MAX down wing flex position is at key 200.
Now remember, the middle section will also affect the outer wing section, and you can edit the outer wing section animation as well to give a more realistic look. The number of sections can be increased if you want, but just remember (THE MORE ANIMATION YOU PUT IN THE MORE IMPACT ON FRAME RATES), so DON’T over do it. The DC10’s wings have 2 animated sections and so far I haven’t seen an impact on FPS as the wings where originally animated with gear compression.
Compile your project AND FLY!!!!!!
The first set of code is what I use with the DC10, because I have set up the animation in GMax that Key 0 is the MAX flexed down position and key 200 is the MAX flexed up position.
With this new animation capability, we can just about animate anything we want to. I read a post somewhere that there is the capability of using XML gauges to directly control animations on the model if the animation is not available within FS, for eg, maybe an APU door .
Good luck, and have fun
Best regards Fraser Turner
Прикрепленные изображения
DUST
15.03.2011 в 04:01
Кто подскажет- что не так с ключами анимации?
на рисунке 2 одниковые рядом стоящие кнопки движение взадвперед
в итоге красная кнопка не работает а черная работает
Прикрепленные изображения
Virpil
15.03.2011 в 07:40
to DUST
Приветствую. Не работает где, в симе() или в максе? Судя по скрину на красную кнопку анимация ставилась без ее включения в максе AutoKey. А по ключам — глянул в сдк фсХ и таких названий для стоковой и фреймовой анимации пока не нашел. Вы их кастомно анимируте?
===== Подниму свою темку снова тк дошел до «точки». Ниче не понимаю с анимацией именно пропеллеров для фс9 (конкретно НВ и РВ вертолета) — перепробовал все. Перелопатил пол-авсима. Было создано как сказано соответственно 3 винта. Названы как в СДК к фс9 — prop0_still, prop0_slow, prop0_blurred. И материал отдельный на них кидал. И иеррархию строил по всякому как только можно, и пивоты вдоль оси вращения винта ЗЕЛЕНЫМ разворачивал, анимацию в максе и назначал, и не назначал. Не хочет мэйкмдл их анимировать — ставит анимэшен триггер в Output на детали с этими именами хоть тресни. Ни одна деталь с такими триггерами не анимируется в симе. Как только переназываю деталь другим ключем из СДК, триггер на выходе мдл снимается и анимация присутствует. Анимирован практически весь вертолет во внешке (exterior), основные рукоятки в ВК (interior) (шаг, газ, педали, ручка), а также кастомно анимирована форточка. Но винты мля — это нечто, уже мозги сломал. Такое впечатление, что мэйкмдл непонимает эти ключи для пропеллеров, либо в МэйкМДЛ.партс.ХМЛ не хватает какого-то кода для них. Ну не может так быть чтобы у всех винты компилились номально, а у меня нет. Предвижу ваш ответ коллеги — рабтотай в 8 максе и будет счастье. Но посудите — какая разница максу и уж тем более панде как названа деталь? Да ему фиолетово. Любая из трех деталей винта переназванная другим ключем из СДК конвертится в мдл нормально, без триггеров анимашки в Output. В подтверждение этому — скрин ниже. При данной компиляции деталь с именем prop0_still была переименована в c_tire_still и триггер снялся. Тут что-то нерпавильно либо я создаю в прорисовке винтов (например (мое ХО) мдл учитывает размах лопасти, (что не факт! само по себе)), либо в МэйкМДЛ.партс.ХМЛ урезана какая-то часть кода. Ведь вся дефолтная анимация компилится в модель именно оттуда. Хотя стоковая наверно не «оттуда» Большая просьба к знатокам конструкторского дела — гляньте в свои партс.ХМЛ для фс9, есть ли там какая-либо часть ХМЛ-кода относящаяся к пропеллерам, винтам или роторам и выложите тут, или на мыл prokd()mail.ru. Потом еще вопрос, де почитать как кастомно анимировать винты, на случай если дефолт непрокатит. Samdim в своем туторе говорил, что за редким исключением все детали надо анимировать этим способом.
Прикрепленные изображения
Reagent
15.03.2011 в 09:15
Предвижу ваш ответ коллеги — рабтотай в 8 максе и будет счастье.
а вы в какой версии макса работаете? Детали стоковой анимации не должны быть анимированы, убедитесь что у них нет ключей анимации.
гляньте в свои партс.ХМЛ для фс9, есть ли там какя-либо часть ХМЛ-кода относящаяся к пропеллерам, винтам или роторам
В стандартном MakeMDL.parts содержатся коды только для ВК, для внешки там ничего нет.
де почитать как кастомно анимировать винты, на случай если дефолт непрокатит.
Ну эт вам придется прибор писать, который будет высчитывать угол поворота винта в каждый момент времени, так что велосипед изобретать не надо
Virpil
15.03.2011 в 12:12
а вы в какой версии макса работаете? Детали стоковой анимации не должны быть анимированы, убедитесь что у них нет ключей анимации. В стандартном MakeMDL.parts содержатся коды только для ВК, для внешки там ничего нет. Ну эт вам придется прибор писать, который будет высчитывать угол поворота винта в каждый момент времени, так что велосипед изобретать не надо
Работаю в 2009. Постом выше есть скрин версии моего макса. На детали винта максовские ключи анимэ не назначены, я писал что пробовал по разному. На скрине в мдл скомпилена только часть, отдельно от всей остальной модели. Там проблемных деталей уже нет. Вся анимация в симе работает кроме винтов. Зеленый пивот идеально совмещен у всех трех деталей, тк они создавались путем клонирования после установки пивота родителя в нужное положение и более не трогались. Иеррархия такая: engine->prop0_still->prop0_slow->prop0_blurred. В студию кинуть не получается, ругается на размер зип-архива. Могу на мыло сбросить. К 3-му пункту цитаты склоняюсь уже давно, токо много непонятного как использовать формулу расчетов угловых скоростей применительно к коду ХМЛ.
З.Ы. Тяжеловатая по фпс получается, но с др. стороны при полетах на Ми-2 от НЕМЦА у меня фпс не намного выше. Комп слабоват.
Прикрепленные изображения
babicheast
15.03.2011 в 14:05
попробуйте такую иерархию
engine
prop0_still
prop0_slow
prop0_blurred
а не
engine
prop0_still
prop0_slow
prop0_blurred
Virpil
15.03.2011 в 15:20
Пробовал, не помогло. Копаюсь в ерархии ДС3 из примера СДК фсХ для 7-го макса. Файл ВК открылся нормально. Только ругается на отсутствие нужного материлала при его назначении куда-либо. Пока безрезультатно, ту же ошибку выдает после компиляции.
Reagent
15.03.2011 в 15:44
Иерархия не важна, создаем любой объект, обзываем его например «prop0_still», компилим в сим — и он начинает вращаться вокруг оси(при соотв. оборотах), даже не знаю, в чем может быть прокол
Virpil
16.03.2011 в 11:40
Че ж делать? Сухари сушить что ль?
Virpil
16.03.2011 в 13:40
to DUST
Приветствую. Не работает где, в симе() или в максе? Судя по скрину на красную кнопку анимация ставилась без ее включения в максе AutoKey….
Тут не верно отписал. В настройках Parameters на вкдадке анимации у вас на левом скрине выставлен Linear Position, а на правом Position XYZ. Посдедний позволяет раздельно настраивать линейность осей.
samdim
16.03.2011 в 13:56
Подниму свою темку снова тк дошел до «точки». Ниче не понимаю с анимацией именно пропеллеров для фс9 (конкретно НВ и РВ вертолета) — перепробовал все. Перелопатил пол-авсима. Было создано как сказано соответственно 3 винта. Названы как в СДК к фс9 — prop0_still, prop0_slow, prop0_blurred.
Как было правильно замечено — обзовите любую деталь prop0_still и она будет вращаться. Как было еще где-то правильно замечено (не помню где, или это я заметил но не написал) — не доверяйте стоковым анимациям.
Может быть ХМЛ битый ? Может Панда глючит ? Может быть просто создадите кастомную анимацию для пропеллера ? Тем более что условие смены still на slow и blurred подогнаны под самолет и в вертолете с его более медленным вращением винта должны быть пересмотрены. Кстати если будете делать кастомную — не забудьте о существовании тэга <Rotation>Y</Rotation> а также не забудьте вставить условие на visibility.
К слову замечу что в ФСХ вообще отказались от стоковых анимаций. И правильно сделали. Хотите чтоб крутилась деталь ? Анимируйте ключами, присваивайте стандартную или кастомную анимацию, ставьте сами условия на видимость.
P.S. и конечно с иерархией prop0_still -> prop0_slow -> prop0_blurred если б все работало то конструкция пропадала бы навсегда как только винт начинал бы раскручиваться.
samdim
16.03.2011 в 14:05
Кто подскажет- что не так с ключами анимации? на рисунке 2 одниковые рядом стоящие кнопки движение взадвперед в итоге красная кнопка не работает а черная работает
Если это для десятки то проверить сто раз соответствие имен детали и анимации. Да, в СДК написано что это не важно, что можно обозвать деталь «колесо» и анимировать анимацией «дверь». Это так, но когда есть мышиные зоны то требуется точное соответствие. В принципе можно назначить самим мышиную зону, но это как-то через раз работает. Проверьте в Object Properties / User defined есть ли строка с Mouse Rect.
П.С. парсер ХМЛ в ФСХ — case sensitive !
Virpil
17.03.2011 в 08:09
to Samdim
Дмитрий, спасибо за ответ. Стараюсь учитывать все перечисленныйе замечания. Наверное буду выводить все управление анимацией «наружу» через L-переменную посредством nameVar. Надо только у программистов поинтересоваться как именно читать из панели L-данные.
В стандартном MakeMDL.parts содержатся коды только для ВК, для внешки там ничего нет.
Не,Reagent.В стандартном MakeMDL.parts есть коды для внешки. Вот например:
Spoiler
<part>
<name>landing_light</name>
<animation>
<parameter>
<code>
(A:ELECTRICAL MAIN BUS VOLTAGE, volts) 0 > if{
(A:LIGHT STATES, flags) 4 & 0 ==
if{ 0 } els{ 100 }
d (>L:LastLandingLightPosition,percent)
}
els{ (L:LastLandingLightPosition,percent) }
</code>
<lag>50</lag>
</parameter>
</animation>
</part>
<part>
<name>engine_rocker_arm</name>
<animation>
<parameter>
<code>
(A:GENERAL ENG ELAPSED TIME:1,RPM) (A:GENERAL ENG RPM:1,RPM) (E:ABSOLUTE TIME, second) * 100 %
<!--(A:PROP RPM:1,RPM) 60 / (A:GENERAL ENG ELAPSED TIME, millisecond) * 100 %
(A:PROP RPM:1,RPM) 60 / (E:ABSOLUTE TIME, second) * 100 %
(A:GENERAL ENG ELAPSED TIME:1,RPM) 60 / (E:ABSOLUTE TIME, second) * 100 %
-->
</code>
</parameter>
</animation>
</part>
<part>
<name>R_landing_light</name>
<copy>landing_light</copy>
</part>
Щас завязал на средний код НВ. Не то кончно, но работает. На него по видимому завязывается вращение лопаток ступеней компрессоров турбин. Моя причина скорее заключена в том, что написал Дмитрий, либо ХМЛ битый, либо панда. Скиньте кто-нить свой МэйкМДЛ.партс.хмл пожалуйста.
И еще — если я правильно понял, такое решение будет удобным, если мне нужно будет реализовать на земле поворот крыла, а в воздухе смещение телеги?
Линкование покажу на примере.
Суть в том, что поворачивая или сдвигая деталь «родитель» автоматически поворачивается или сдвигается деталь «потомок» относительно пивота «родителя».
Представьте своё плечо и предплечье. Сгибая плечевой сустав Вы автоматически за плечом тянете и поворачиваете предплечье (если не двигать локтевым суставом).
На первой картинке создаём два объекта: кубик и цилиндр.
Выделяем объект «потомок» и давим третью кнопку слева в панели инструментов (она выделена на второй картинке).
Далее либо сразу кликаем мышкой на объект «родитель» либо выбираем его из списка (так меньше ошибок можно совершить). В списке собственно кликаем на имя объекта и нажимаем кнопку Link.
Теперь лучше лишний раз кликнуть на стрелку (5-я слева кнопка), чтобы не прикрутить что-нибудь в придачу.
Для проверки созданной иерархии открываем список объектов и включаем опцию Display Subtree.
Результат будет виден в виде ступенчатого списка деталей. Самый левый это «родитель», правее все «потомки» вплоть до пра-пра-пра… внуков.
А вот различие поведения в воздухе и на земле надо тестировать. Прям сходу не скажу.
Возможно, что в теле кода анимации надо будет устраивать проверку «земля-воздух».
Но вообще-то тут свою непоследнюю роль должны сыграть точки контакта и параметры амортизаторов.
Итак, что получается:
Если я Вас правильно понял, то можно внутри узла подвески телеги к крылу спрятать два маленьких кубика. К этим кубикам прилинковать все детали телеги за исключением рук пилота. Один кубик будет для поворота тележки вверх-вниз, другой для поворота телеги влево-вправо. К этим двум кубикам поставить еще два (для крыла) прилинковать к ним все части крыла, тоже анимировать (вверх-вниз, влево-вправо). А затем в коде уже прописывать условия какая анимация будет проигрываться в зависимости от того — где аппарат находится. Я знаю, что это возможно, потому как видел в мотодельтаплане от ЛАГО такую штуку — в полете нельзя осуществлять горизонтальные повороты.
Не вытерпел.. уже попробовал линки… — все стало более чем понятно с этим делом. А симулятор эту фишку поймет?
Сразу же здесь еще вопрос: предположим, у меня промежуток из 100 кадров. Анимация делается одновременно для всех деталей в этом промежутке (т.е. сразу все возможные действия совершаются одновременно — и телега поворачивается, и крыло (во всех 4х направлениях), и руки пилота), или нужно разбивать этот промежуток на отрезки (т.е. крыло анимируется в промежутке от 0 до 49 во всех 4х направлениях, телега анимируется в промежутке от 50 до 100 также во всех направлениях)?
Плечи рук прилинковать к туловищу, предплечья к плечам. кисти к предплечьям. Голову прилинковать к туловищу (надеюсь виртуальный пилот будет ей крутить в сторону поворота и вверх-вниз).
Да.
Думаю что ещё пара кубиков будет не нужна. Возможно многое, пока не упрётесь в ограничения компилятора. Об этом в других темах написано.
А я для симулятора и пишу вроде как. Кстати, под какую версию пепелац с гравицапой? А чтобы отпали сомнения прикрепляю картинку из своего творчества. Это работает даже на FS2004.
Длина анимации должна соответствовать SDK. Если положено уложиться между кадрами 0-50 (тумблеры кажись), значит именно так надо делать.
Если между 0-200 (стойки шасси), то именно между ними. А вот если прописываете кастомную анимацию, то ограничение у Вас 0-1024. Больше низзя.
Т.е. двигая ползунок анимации Вы увидите одновременную работу всех анимированных деталей, а не одну за другой.
Я спрашивал про версию сима, чтобы определится с анимацией рук. В FSX там несколько по-другому. А так из примера в SDK можете выдернуть человечка из самоля и изучать его телодвижения. У него насколько помню одна рука на РУСе, другая на РУДе. Вам только углы поворота менять придётся, ну и наверное ещё один кубик в плече для крена, хотя сразу трудно сказать.
Кстати, я могу попробовать посмотреть в ACM или типа него дефолтный мотодельтаплан из FSX на предмет что и как там шевелится в анимации. Я всё думаю тележка относительно крыла или крыло относительно тележки.
Спасибо. Убил все строю по одной детали. Пока получилсь одна створка бьюсь со второй.
Ну, здесь, все-таки движения рук и ног пилота будут отличаться. В общем, посмотрим — что получится.
А как сделать чтобы прибором можно было управлять из ВК. Например кремальерой высотомера. Т.е. есть гау прибор, в котором кремальера, естественно, вертит стрелочки и есть она же трехмерная в ВК с анимацией, но вот как управлять высотомером?
1. Делаю анимацию шасси передней стойки. Стойка не управляемая т.е. сама ездит куда ей захочется.
Вопрос:
как сделать чтоб колесо, например в повороте если остановиться, тоже замерло в том положении?
2. Не могу найти параметр для сжатия передней стойки, когда на земле пустой, в воздухе и когда полное сжатие.
В Х-е исходя из поведения модели в симе(мдл не ковырял, но по поведению-так) — Тележка — родитель, а крыло потомок.
И надо делать так-же я думаю, иначе в полете мы получим эффект такого плана что камера будет привязана к крылу, а пилот будет чисто визуально наклонять не крыло а телегу вместе с собой. Эффект будет странновато выглядеть. — Все-же предполагается что мы смотрим глазами пилота, даже снаружи, а не камерой на крыле.
Если этот вопрос ещё кого волнует.
Drum27
Прибором управлять из ВК можно только если намапить на трехмерные элементы управления — сам прибор. Тут где-то в статьях это было- посмотрите подробнее. Либо делать кастомную анимацию с обработкой действий мыши, но тут нужен будет исходник прибора, что-бы «завязать» одно с другим.
SimmakeR
Самоорентируемое колесо по идее прописывается в айркафт.кфг и после этого обычное C_Wheel будет так работать. Хотя сам дело с самоорентирующимися не имел- не уверен.
Сжатие и выпуск шасси одно и то-же- это одна деталь и одна переменная. Кадры: 0 убрано 100 выпущенно 150 сжато на стоянке 200 полностью сжато. Повязано это дело на переменные выпуска шасси. Т.е. для выпуска и сжатия одни и те-же переменные.
Спасибо. На счет сжатия: если делать деталь с_wheelwell, то Вы описали праильно на счет сжатия, но эта деталь пропадает когда шасси запущены, а у меня шасси без створок и их видно в запущенном состоянии и переменная из сдк на выпуск шасси не работает на сжатие. Должна быть другая переменная.
З.Ы. Где-то на буржуйском форуме разрабов раскопал код крутки крыла модели при болтанке для вставки в MakeMDL.Parts.xml. Мож кому понадобится. Сам не тестил.
Прикрепленные изображения
на рисунке 2 одниковые рядом стоящие кнопки движение взадвперед
в итоге красная кнопка не работает а черная работает
Прикрепленные изображения
Приветствую. Не работает где, в симе() или в максе? Судя по скрину на красную кнопку анимация ставилась без ее включения в максе AutoKey. А по ключам — глянул в сдк фсХ и таких названий для стоковой и фреймовой анимации пока не нашел. Вы их кастомно анимируте?
=====
Подниму свою темку снова тк дошел до «точки». Ниче не понимаю с анимацией именно пропеллеров для фс9 (конкретно НВ и РВ вертолета) — перепробовал все. Перелопатил пол-авсима. Было создано как сказано соответственно 3 винта. Названы как в СДК к фс9 — prop0_still, prop0_slow, prop0_blurred. И материал отдельный на них кидал. И иеррархию строил по всякому как только можно, и пивоты вдоль оси вращения винта ЗЕЛЕНЫМ разворачивал, анимацию в максе и назначал, и не назначал. Не хочет мэйкмдл их анимировать — ставит анимэшен триггер в Output на детали с этими именами хоть тресни. Ни одна деталь с такими триггерами не анимируется в симе. Как только переназываю деталь другим ключем из СДК, триггер на выходе мдл снимается и анимация присутствует. Анимирован практически весь вертолет во внешке (exterior), основные рукоятки в ВК (interior) (шаг, газ, педали, ручка), а также кастомно анимирована форточка. Но винты мля — это нечто, уже мозги сломал. Такое впечатление, что мэйкмдл непонимает эти ключи для пропеллеров, либо в МэйкМДЛ.партс.ХМЛ не хватает какого-то кода для них. Ну не может так быть чтобы у всех винты компилились номально, а у меня нет. Предвижу ваш ответ коллеги — рабтотай в 8 максе и будет счастье. Но посудите — какая разница максу и уж тем более панде как названа деталь? Да ему фиолетово. Любая из трех деталей винта переназванная другим ключем из СДК конвертится в мдл нормально, без триггеров анимашки в Output. В подтверждение этому — скрин ниже. При данной компиляции деталь с именем prop0_still была переименована в c_tire_still и триггер снялся. Тут что-то нерпавильно либо я создаю в прорисовке винтов (например (мое ХО) мдл учитывает размах лопасти, (что не факт! само по себе)), либо в МэйкМДЛ.партс.ХМЛ урезана какая-то часть кода. Ведь вся дефолтная анимация компилится в модель именно оттуда. Хотя стоковая наверно не «оттуда» Большая просьба к знатокам конструкторского дела — гляньте в свои партс.ХМЛ для фс9, есть ли там какая-либо часть ХМЛ-кода относящаяся к пропеллерам, винтам или роторам и выложите тут, или на мыл prokd()mail.ru. Потом еще вопрос, де почитать как кастомно анимировать винты, на случай если дефолт непрокатит. Samdim в своем туторе говорил, что за редким исключением все детали надо анимировать этим способом.
Прикрепленные изображения
а вы в какой версии макса работаете? Детали стоковой анимации не должны быть анимированы, убедитесь что у них нет ключей анимации.
В стандартном MakeMDL.parts содержатся коды только для ВК, для внешки там ничего нет.
Ну эт вам придется прибор писать, который будет высчитывать угол поворота винта в каждый момент времени, так что велосипед изобретать не надо
Работаю в 2009. Постом выше есть скрин версии моего макса. На детали винта максовские ключи анимэ не назначены, я писал что пробовал по разному. На скрине в мдл скомпилена только часть, отдельно от всей остальной модели. Там проблемных деталей уже нет. Вся анимация в симе работает кроме винтов. Зеленый пивот идеально совмещен у всех трех деталей, тк они создавались путем клонирования после установки пивота родителя в нужное положение и более не трогались. Иеррархия такая: engine->prop0_still->prop0_slow->prop0_blurred. В студию кинуть не получается, ругается на размер зип-архива. Могу на мыло сбросить.
К 3-му пункту цитаты склоняюсь уже давно, токо много непонятного как использовать формулу расчетов угловых скоростей применительно к коду ХМЛ.
З.Ы. Тяжеловатая по фпс получается, но с др. стороны при полетах на Ми-2 от НЕМЦА у меня фпс не намного выше. Комп слабоват.
Прикрепленные изображения
а не
engine prop0_still prop0_slow prop0_blurredТут не верно отписал. В настройках Parameters на вкдадке анимации у вас на левом скрине выставлен Linear Position, а на правом Position XYZ. Посдедний позволяет раздельно настраивать линейность осей.
Как было правильно замечено — обзовите любую деталь prop0_still и она будет вращаться.
Как было еще где-то правильно замечено (не помню где, или это я заметил но не написал) — не доверяйте стоковым анимациям.
Может быть ХМЛ битый ? Может Панда глючит ?
Может быть просто создадите кастомную анимацию для пропеллера ? Тем более что условие смены still на slow и blurred подогнаны под самолет и в вертолете с его более медленным вращением винта должны быть пересмотрены.
Кстати если будете делать кастомную — не забудьте о существовании тэга <Rotation>Y</Rotation> а также не забудьте вставить условие на visibility.
К слову замечу что в ФСХ вообще отказались от стоковых анимаций. И правильно сделали. Хотите чтоб крутилась деталь ? Анимируйте ключами, присваивайте стандартную или кастомную анимацию, ставьте сами условия на видимость.
P.S. и конечно с иерархией prop0_still -> prop0_slow -> prop0_blurred если б все работало то конструкция пропадала бы навсегда как только винт начинал бы раскручиваться.
Если это для десятки то проверить сто раз соответствие имен детали и анимации. Да, в СДК написано что это не важно, что можно обозвать деталь «колесо» и анимировать анимацией «дверь». Это так, но когда есть мышиные зоны то требуется точное соответствие. В принципе можно назначить самим мышиную зону, но это как-то через раз работает. Проверьте в Object Properties / User defined есть ли строка с Mouse Rect.
П.С. парсер ХМЛ в ФСХ — case sensitive !
Дмитрий, спасибо за ответ. Стараюсь учитывать все перечисленныйе замечания. Наверное буду выводить все управление анимацией «наружу» через L-переменную посредством nameVar. Надо только у программистов поинтересоваться как именно читать из панели L-данные.
Не,Reagent.В стандартном MakeMDL.parts есть коды для внешки. Вот например:
Щас завязал на средний код НВ. Не то кончно, но работает. На него по видимому завязывается вращение лопаток ступеней компрессоров турбин. Моя причина скорее заключена в том, что написал Дмитрий, либо ХМЛ битый, либо панда. Скиньте кто-нить свой МэйкМДЛ.партс.хмл пожалуйста.