если есть фотография с выпущенными закрылками то мне кажется что все ясно. Сколько может быть разных способов для закрылка выпуститься из одного положения в другое по дуговой траектории ? Важно только понять систему крепления закрылка, а их не так много:
— неподвижная ось внутри закрылка (все мелкие самолеты, Ил-14)
— неподвижная ось вынесеная ниже закрылка в обтекатель (DC-9, DC-10, Dornier 328)
— рельса проходящая внутри закрылка (Ан-12, Ан-24, Ил-18, Ил-62, Ту-104 — Ту-134, B707)
— рельса вне закрылка в обтекателе (Boeing начиная с 727, все Airbusы, Ил-86, Ту-154, Як-42)
Теперь с шасси.
Я Ил-76 не изучал, но мне кажется что он попадает в раздел ломающейся стойки. Лишь с тем отличием что у него колесная тележка вдобавок поворачивается вдоль фюзеляжа. У Б-52 тоже поворачивается и у Ту-144 тоже, но по-другому. Но все эти стойки имеют в базе треугольник с одной ломающейся стороной которая становится на замок. У амфибий типа Бе-12 свой тип стоек. Частные случаи всегда были и будут. Тут уж можно выделить в одну категорию «поджимающиеся» шасси как на Ан-8, Ан-22, Ан-124 или А400М.
Но как бы стандартна ни была конструкция стойки, фотографии все равно нужны, так как детальки у каждой стойки свои.
Fishbed
18.01.2007 в 21:38
Итак, предлагаю альтернативный метод размещения чертежа.
Допустим, что чертежи в фотошопе уже подгтовлены. Переходим в 3Д макс.
Создаем примитив BOX (1), задаем геометрические размеры параллелепипеда, равные геометрическим размерам самолета (2), добавлям модификатор NORMAL для того, чтоб «вывернуть наизнанку» наш параллелепипед (3).
Прикрепленные изображения
Fishbed
18.01.2007 в 21:40
далее жмем букву М на клаве и выбираем в редакторе материалов любую пустую ячейку. Далее жмем на кнопку STANDART и в открывшимся окне выбираем MultiSub-object жмем ОК.
Прикрепленные изображения
Fishbed
18.01.2007 в 21:43
уставнавливаем кол-во компонентов материала равным 6 ( число граней паралепипеда ).
Далее выбираем 1-ый подматериал и присваиваем ему текстуру, т.е. наш чертеж. Не забудем в свитке Blin basic parametrs присвоить значение 100 параметру SELF ILLUMINATION.
Прикрепленные изображения
Сообщение отредактировано Fishbed: 18 January 2007 — 21:51
Fishbed
18.01.2007 в 21:49
Остальным подматериалам присваиваем тоже самое методом ДРАГ ЭНД ДРОП. При копировании будут вылезать окошки с 3-мя вариантами копирования материала… Будем выбирать КОПИ.
Прикрепленные изображения
Fishbed
18.01.2007 в 21:59
После того как все присвоено, возвращаемся к нашему первому подматериалу. Щелкаем на нем и ищем свиток BITMAP PARAMETRS. Да, попутно нажмем на кнопку «Show Map in Viewport», и найдем, на каком виде ( сверху, снизу, слева, справа и т.д) отобрахилась наша текстура. Нашли… далее жмем на кнопку VIEW в вышеуказанном свитке и получаем наш чертеж в отдельном окошке. Наша задача, таская рамку мышкой, меняя числа U V W H UV для точной настройки, подогнать рамку так, что самолет вписывался от упора до упора в наш паралеллепипед ( мы ж ведь создали его с размерами = размерам самолета )
Прикрепленные изображения
Fishbed
18.01.2007 в 22:06
Когда рамка подгнона и наш чертеж самолета занял целиком сторону параллепипеда, просто закрываем окно. Щелкаем на кнопку GO TO PARENT до тех пор пока не увидим опять список подматериалов. Выбираем следующий подматериал, щелкаем на кнопку «Show Map in Viewport » , ищем на каком виде появилась текстура, идем в параметры битмапа и подгоняем соответствующий вид на чертеже под соотв. сторону паралелепипеда.
Повторяем то же для оставшихся подматериалов.
Порой может появиться неприятная вещь ( см скрин. ) в окне проекци ЛЕФТ мы видим чертеж раком, хотя вид «слева» на чертеже лежит в нашей рамке…
Прикрепленные изображения
Fishbed
18.01.2007 в 22:12
…..изменив параметры углов в группе ANGLE мы получили то, как и должно быть на самом деле.
Значение W=90 сделало чертеж «не раком», а значени U = 180 сделало вид на чертеж «слева» ( если оставить 0, то будет вид на чертеж «справа», т.е. чертеж зеркально отобразиться в другую сторону )
з.ы. я для видов справаслева использую один и тот же чертеж ( т.е. в файле ЖПГ тока одна проекция ), а разворачиваю его, меняя значение U c 0 на 180 и наоборот
Прикрепленные изображения
Fishbed
18.01.2007 в 22:25
собсно за сим все мы получили коробку, обтянутую нашим самолетом.
Конечно каждому нравится свой метод размещения чертежей… но это на любителя. С сечениями вообще все просто делаю: в фотошопе на картинку накладываю сечение ( просто новый layer с сечением в фотошопе )… Когда сечение не нужно, иду в фотошоп, делаю LAYER невидимым, сохраняю … сечения в максе нет . Если чертеж ровный и нормальный, то такой метод тоже точный, а если чертеж кривой, то можешь сечение поставить, как Дмитрий описал ( перпендикулярной плоскостью) — все равно совпадать не будет с проекциями и с моделью.
з.ы. прикладываю эдакий «бонус»… Чертеж, 3д макс файл с уже установленным чертежем ( тока укажите максу, где чертеж лежать будет — он спросит об этом) + грубая модель носа этого самолета. Нос создал за несколько минут для проверки размещения чертежей… и увы… все совпадает, кроме вида «спереди» — это проекция на чертеже оказалась кривой —
з.з.ы с размещением чертежа в максе м.б. есть косяк… на этот раз мой. То, что в проекциях справаслева передняя опора стоит на земле — это неправильно .. наверное ( башка че-то туго ща сыбражает что правильно, а что нет )…В этом случае геометрические хар-ки фюзеляжа в высоту не соответствуют реальности
Сообщение отредактировано Fishbed: 18 January 2007 — 23:51
Scorpio9999
19.01.2007 в 04:23
samdim (14.01.2007 02:21):
Есть какие-то способы создания текстуры из детали, но я их не знаю.
Дмитрий, во-первых Merci Boku за такой тутор.
На многие вещи я стал смотреть с другой стороны.
Однако вернёмся к текстурной развёртке, а точнее к альтернативному пути её создания. Версия 3DMax 8-я.
1. Берём деталь — фюзеляж, например.
2. Выделяем полигоны какие нам нужны, делаем плоский маппинг и сразу же выбираем размер текстуры в метрах. Т.е. какую площадь будет покрывать наш текстурный лист.
3. Делаем UVWUnwrap и тащим кусок в удобное для нас место.
4. В окне Edit UVWs в меню Tools выбираем пункт Render UVW Template.
5. В открывшемся окошке проверяем размер текстурного листа 1024×1024 (или ставим что нам нужно) и давим кнопарь в самом низу. Остальные параметры можно не трогать, но можно и поиграться.
6. Во вновь открывшемся окне видим болванку нашей текстуры для выделенных полигонов. Записываем как отдельный BMP файл.
Далее в послойном графическом редакторе такие картинки ставим в отдельные слои и редактируем. Убираем за краями детали чёрный фон в общем. Записываем картинку в оригинальном формате редактора и копию как обычный BMP файл для 3DMax собственно. В материале для самолёта делаем рефреш текстуры.
Ну и повторяем всё вышеизложенное для остальных поверхностей.
Bravo
19.01.2007 в 06:10
Scorpio,вообще-то это не альтернативный,а страндартный метод текстурирования моделей в 3д графике.То есть после того как модель готова она полностью режется на УВ-развертки,которые сохраняются в файл,затем уже по этому шаблоны рисуется текстура.Но вы упустили одну маленькую деталь и новичок,который захочет оттекстурить модель по этому методу руководствуясь вашим обяснением,столкнется с непреодолимым препятствием-а именно:
eсли выбрать группу полигонов из модификатора Editable Poly а затем задать на эту группу UVW mapping как сделали вы то после этого невозможно будет задать UVW mapping на другую группу полигонов,например на вторую половинку вашего фюзеляжа.
Поэтому сначала поверх editable poly кидается модификатор poly select или mesh select-уже в нем выбирается группа полигонов-затем уже поверх него uvw mapping-затем unwrap-располагаем кусок на листе.
Затем опять поверх всего-poly select(mesh select)-выбираем новую группу полигонов-снова uvw mapping и unwrap-и так далее-отдельный модификатор poly select для каждой группы полигонов.В итоге коллапсим стек-кидаем unwrap и видим всю нашу модель порезанную на выкройки.
Render UVW-очень полезная фича-но к сожалению существует только в восьмом максе.
Для предыдущих версий можно использовать бесплатный плагин под названием Texporter-он делает тоже самое и немножко больше.Хотя я если работаю в максе делаю просто скриншот окна юв эдитора раскрыв его на весь монитор.
samdim
20.01.2007 в 09:10
Теперь шасси.
У каждого самолета они как правило разные. Процесс создания шасси довольно трудоемкий и долгий, хотя конкретно никаких сложностей в нем нет. Просто много деталей — много возни. В Ту-128 ситуация нетипичная. Судя по фотографиям — его шасси как две капли воды напоминают шасси Ту-124. Удивляться тут не приходится — самолеты одной эпохи, одного конструкторского бюро, близкие по весу… Так так так, а кто здесь делал модель Ту-124 недавно ? Я 🙂 То есть шасси для Ту-128 у меня уже есть. Воспользусь оказией для пояснения еще одной техники которую можно употреблять если у вас уже есть модель с которой хочется позаимствовать деталек. Это merge. Выбираем в меню File / Merge. Предлагеет открыть файл. Находим Ту-124, открываем. Перед нами — иерархия его объектов, выбираем все что связано с шасси
затем мерж задаст еще несколько вопросов типа «в сцене уже есть деталь с таким названием. Что делать ? 1 — всунуть как есть, 2 — старую заменить новой, 3 — ничего не делать, 4 — переименовать новую». В нашем случае этот вопрос не должен возникнуть так как мы импортируем новые детали. Но мерж можно использовать также чтобы синхронизировать несколько параллельных проектов с одинаковыми деталями (как например А318-А319-А320-А321). Тогда этот вопрос возникает.
Следующий вопрос звучит примерно так «деталь А была прилинкована к детали Б, а в сцене уже есть такая деталь. Что делать ? 1 — пусть А будет прилинкована к Б из сцены, 2 — порвать линк». Обычно выбираем 1.
Дальше вопрос с материалами. Если у импортируемого объекта материал называется также как один из материалов в сцене, то выскакивает такой диалог:
1 — новый объект остается со своим материалом. Будет создан новый материал с тем же названием что и один из материалов в сцене. Другими словами — потом запутаетесь в два счета.
2 — новому объекту присваивается материал из сцены.
3 — будет создан новый материал но с другим названием.
Обычно выбор падает на 2, но в данном случае ситуация такая, что шасси на Ту-124 отмапены на листе который ничего не имеет общего с текстурами Ту-128. Временно импортируем создав новый материал, а потом присвоим деталям шасси материал из Ту-128 и расставим UVW маппинг где-нибудь скажем на текстуре крыла.
Закончив импорт получаем шасси которые конечно расположены черти где. Двигаем их на нужное место. Мда — придется править ногу основной стойки и приводной шток выпуска/запуска
Но в общем ничего трагического, анимация осталась, маппинг есть, сейчас поправим ногу стойки и будет все ок.
samdim
20.01.2007 в 09:33
Правим ногу, двигая слайдер правим анимацию. Тут удобно сделать гондолу прозрачной (see-through) чтобы видеть как шасси размещаются внутри и чтоб не вылазили за гондолу и не цепляли за края при выпуске. Одновременно анимируем створки.
Проделывам аналогичные операции с передней стойкой.
В шасси очень важно соблюдать иерархию объектов, не забывать делать Reset Scale, и тщательно контролировать анимацию, добавляя фреймы если надо чтобы все тяги не вылетали из шарниров. Номера фреймов тоже важны. Кадр=0 — шасси запущены. Кадр=100 — выпущены, висят в воздухе. Кадр=150 — стоят на земле, самолет пустой. Кадр=200 — максимальное сжатие. В корне всей структуры шасси должна лежать деталь c_wheelwell (соответственно l_wheelwell, r_wheelwell для основных стоек). Она пропадает когда шасси запущены — следовательно они не отрисовываются за закрытыми створками и не потребляют фпс. Само собой, если шасси не запускаются или запущенные шасси видны то эту деталь ставить нельзя.
показаны фреймы. От 2 до 30 — открываются створки. От 30 до 70 выпускаются шасси. От 70 до 100 закрываются створки. От 100 до 200 сжимается амортизатор. Почему створки открываются от 2 а не от 0 ? Потому что если они открываются в 0, то в момент открытия появляется деталь c_wheelwell — а с ней и сами шасси. Створки успевают слегка приоткрыться прежде чем шасси вырисовываются, что влечет за собой появление на долю секунды яркой щели по периметру створок. Отодвинув начало открывания на 2 фрейма мы даем шасси время появиться. Кстати на Ту-128 передние стойки не закрываются при выпущеных шасси, так что насчет 70-100 я вас обманул.
А вот и сама иерархия объектов передней стойки и последовательность выпуска
опуская детали, цепочка линков выглядит так: c_gear_stojka — c_wheel — c_gear_ammortizator — c_tire. Особого внимания заслуживает деталь c_wheel. Она может быть просто дамми. Она отвечает за поворот переднего колеса, причем если самолет стоит на месте, то колесо не поворачивается. Анимация у нее такая. Кадр 100 : колесо смотрит прямо вперед. Кадр 150 : колесо развернуто назад, на 180° (по часовой стрелке). Кадр 200 : колесо смотрит снова прямо вперед (развернувшись по часовой стрелке от предыдущего положения). То есть между кадрами 100 и 200 c_wheel заставляет колесо сделать полный оборот. Конечно на большинстве самолетов колесо не может сделать полный оборот. Но максимальные углы затем ограничиваются в динамике, а анимация поворота должна в любом случае делать полный оборот.
samdim
20.01.2007 в 11:26
Игорь Гончаров прав — надо с самого начала почаще компилировать модель и смотреть ее в симе чтобы впоследствии избежать неприятностей.
Давно пора было компильнуть, займемся этим делом сейчас.
Экспортируем модель. Используем для этого плагин Panda. На скрине мои настройки Панды.
Записывам скажем в файл tu128.X
Создаем папку для этого самолета в FS2004/Aircraft, назовем ее Tu-128. Проще всего скопировать какой-нибудь похожий самолет а потом навести порядок в самой папке. Я взял для примера Ту-124 — у него наверняка и автопилот похожий и ход стоек одинаковый… Потом динамщики разберутся с движками, поведением, расходом… Это уже не мое дело, я в этом не понимаю.
Надо аккуратно проследить что все ссылки указывают на правильные файлы. В Aircraft.cfg смотрим в первую секцию [fltsim.0]
[fltsim.0]
title=Tupolev Tu-128
sim=Tu-128
model=
panel=
sound=
texture=
kb_checklists=
kb_reference=
atc_id=45032
atc_airline=
atc_flight_number=1259
ui_manufacturer=Tupolev
ui_type="Tu-128"
ui_variation="Soviet Air Forces"
description=bla bla bla
имя в title должно быть одно на весь сим. Параметр sim=Tu-128 означает, что должен быть файл Tu-128.air. Параметры model, sound, panel, texture не имеют значений, это значит что должны быть папки model, sound, panel, texture. Если бы было например texture=redArmy08, то это значит должна быть папка texture.redArmy08 — и так далее. В папке model лежат два файла: model.cfg и файл мдл. Проверить что в файле model.cfg ссылка указывает именно на файл мдл (без расширения мдл).
В Фотошопе добавляем альфа-канал к нашим текстурам. Пока что белый (т.е. без эффекта), разве что где-нибудь надо капнуть серым иначе imagetool проигнорирует альфу. Сохраняем в формате битмап 32 бит, помещаем в папку textures. Теперь открываем каждый лист текстуры в imagetool, проверяем что он в 32 бит и сохраняем. Сохранять надо обязательно, иначе сим вылетит.
Запускаем MakeMdl.exe и выбираем экспортный файл tu128.X, модель которую мы щас делаем tu128.mdl, лезем в закладку Options, ставим галочки как на скрине и жмем ОК. Компилирует… Важно поставить галочки именно как на скрине.
samdim
20.01.2007 в 11:43
Теперь запускаем сим, выбираем Туполев / Ту-128 и наблюдаем нечто похожее на самолет
можем даже попробовать взлететь
фпсы пока не жрет
Кстати обратите внимание — на первом скрине конус заборника запущен, на последнем — выпущен. Мы помнится анимировали его назвав именем konus_zabornika и используя кадры от 0 до 20. Так вот, прежде чем компилировать, я добавил в makemdl.parts.xml определение для кастомной анимации конуса:
это конечно неправильная анимация с технической точки зрения, но в описании сказано: конус запущен на земле и на взлете а в остальное время выпущен. Ну я и рассуждаю тогда : если самолет находится на высоте меньше 150м то конус запущен, иначе — выпущен. На языке makemdl это записывается так:
(A:RADIO HEIGHT, meters) 150 < if{ 20 } els{ 0 }
или по-русски: если переменная A:RADIO HEIGHT (в метрах) имеет значение меньше 150 (< означает «<» на XML чтобы не путать с тэгами), то фрейм 20, иначе фрейм 0. А чтобы из положения 0 в положение 20 конус не перескакивал а плавно отъезжал — я добавил параметр <lag>10</lag> который означает что анимация едет со скоростью 10 фреймов в секунду, т.е. наш конус из одного положения в другое переедет за 2 секунды.
Следите за правописанием в коде ХМЛ. Он страшно хрупкий, в лучших традициях микрософта. Например после if и els не должно быть пробела, а после фигурной скобки должен быть. Названия переменных я черпаю из СДК.
samdim
20.01.2007 в 21:40
Что-то выглядит самолет не угрожающе… Пора снабдить его средствами убеждения.
Делаем пилоны. Вытягиваем ребро крыла
Снабжаем борт ракетами. Все это операции простые, хоть и немного муторные. Добавлю, что несмотря на перенос шасси из Ту-124 пришлось провозиться еще несколько часов расставляя маппинг на листе tu128_wings_t.bmp
В результате получаем самолет издали уже похожий на Ту-128. Не хватает еще множества деталек, но с Миг-21 уже не спутаешь.
фпс за 330 на моей средненькой карте 6600GT 🙂 Просто когда фпсов оооочень много, то они прыгают, иногда весьма высоко. Вот вам и доказательство что количество полигонов не убивает фпс.
Завтра добавим деталек.
samdim
23.01.2007 в 01:14
На рутинных детальках не останавливаюсь. Вот поинтереснее часть : сопло. В нем есть подвижные лопатки изменяющие его форму и приводимые в движение кольцом. С кольцом все понятно — оно привязано к стандартной анимации из СДК LeverThrottle1. Кадр=0 : полный газ, кадр=50 : малый газ, кадр=100 : реверс. У 128-го реверса нет, так что анимируем кольцо между кадрами 0 (задвинуто) и 50 (выдвинуто). С лопатками интересней. Они тоже анимированы стандартной анимацией, с этим вопросов никаких. Интересный момент — это как быстро и просто сделать 24 лопатки и точно и аккуратно их анимировать.
Сначала делаем одну. Загибаем слегка, добавляем не то ребра жесткости не то приводные тяги, по две на каждую лопатку. Перемещаем пивот поинт в центр кольца — лопатки располагаются по кругу вокруг этого центра. Затем жмем на Shift и поворачиваем лопатку на 30°. Она дублируется, при этом выскакивает диалог. Выбираем «Instance» и 11 копий.
Теперь анимиурем все 12 лопаток одновременно. Выбираем их всех. Пока что пивот находится в центре кольца (1). Выбираем Pivot / Center to Object, пивоты распределяются по лопаткам (2). Двигаем вдоль оси Y до края лопаток (3). Это и будет их конечное положение. Теперь, все еще с выбраными лопатками, анимируем их все сразу. Устанавливаем их в открытое положение в кадре 50, закрытое в кадре 0. (4-5). Чтобы в закрытом положении лопатки не въезжали друг в друга, выбираем каждую вторую и чуточку прикрываем их. Теперь копируем все 12 лопаток и помещаем копии на второе сопло. Получили анимированые сопла, смотрится вполне эффектно.
Добавим еще пару деталек — приборную панель и открывающиеся заслонки (кастомная анимация — вот ее код : (A:RADIO HEIGHT, meters) 350 < (A:GENERAL ENG THROTTLE LEVER POSITION:1, percent) 60 > && if{ 20 } els{ 0 }
,
Экспортируем, компилируем, смотрим в симе. Кстати, это скрин номер 100. За сто скринов мы научились довольно многому. В общем, изложенного в этом туториале достаточно чтобы успешно закончить внешнюю модель. Поэтому не буду утомлять вас скринами типа «сделали еще одну антенку». Доделаю мелочи на досуге, затем займемся ВК.
samdim
23.01.2007 в 22:48
Вот забавную штуку придумал. Думаю что на платниках мне не понадобится, поэтому делюсь. Приделал на Ту-128 пламя в сопло. На малом газе там совсем темно, а с повышением оборотов появляется слабое голубое свечение которое плавно усиливается а потом переходит в ярко желтое и наконец включается эффект форсажа. На скрине разница между 0 и 1 практически не видна, но она есть, ночью видно.
Вопрос — как это сделано ? Особенно плавное нарастание яркости голубого пламени.
Подсказка: здесь 6 уровней яркости, но с тем же успехом можно сделать и 26, просто фпсы жалко. Одно из решений — делать детальку с текстурой пламени в 6 экземплярах с разной яркостью и создать для каждой visibility condition через кастомный ХМЛ код. А если уровней яркости 26 ? Такое решение неэлегантно 😉
samdim
23.01.2007 в 23:16
А вот и решение 🙂 Всем кто будет использовать — писать copyright Samdim ! 🙂
1 : внутренность сопла (форсажная камера)
2 : стопка прозрачных дисков
3 : диск с нарисованым голубым пламенем
4 : дамми prop0_blurred
5 : конус из светящегося материала
сопло находится справа.
Диск с голубым пламенем (3) прилинкован к дамми prop0_blurred (4). Это обеспечивает ему вращение а также условие на его появление — когда двигатель выключен, диск пропадает.
Прозрачные диски (2) имеют материал с прозрачностью 40%, цвет черный, спекулар черный. При виде снаружи они закрывают диск с пламенем. Их 4, значит их общая прозрачность равна 1 — 0.4*0.4*0.4*0.4 = 98% то есть диска практически не видно.
Диск с пламенем анимирован через lever_throttle1 — когда тяга увеличивается диск сдвигается в сторону сопла и пересекает прозрачные диски. Таким образом, придвинувшись к соплу его сначала закрывают 4, потом 3, потом 2 прозрачных диска, потом один, потом ни одного. Соответственно яркость пламени растет всякий раз. При приближении к максимальному значению РУДа, анимированый желтый конус (5) выдвигается занимая весь объем форсажной камеры. При этом включается эффект форсажа (о том как — после).
Относительный сдвиг диска в сторону сопла не заметен, потому что прозрачные диски расположены близко друг к другу. Как видите, ничего не мешает поставить не 4 а хоть 24 прозрачных диска, уменьшив соответственно их прозрачность — при этом переход синего пламени от темного к яркому будет абсолютно плавным. Но я пожалел графический движок сима, тяжко бедному считать 24 степени прозрачности…
Вот так, век живи — век изобретай 🙂
samdim
23.01.2007 в 23:35
тот факт, что желтый огонь сделан конусом позволяет получать промежуточные эффекты — с ярким ободком
ну и вид сбоку
samdim
24.01.2007 в 13:36
Flogger (23.01.2007 18:53):
2 Samdim. Небольшое замечание, думаю, пригодится. Регулируемое сопло применяется на двигателях с форсажной камерой, и работает так : Малый газ — сопло полностью открыто ;
Начиная с некоторых оборотов ( зависит от типа двигателя ) сопло полностью прикрывается (для получения максимальных тяговых характеристик);
Максимал — сопло по-прежнему прикрыто ;
Минимальный форсаж — сопло приоткрывается, но не полностью;
Полный форсаж — сопло открыто практически полностью, остаётся небольшой запас для регулирования, но для сима это можно игнорировать.
Отсюда вопрос — как всё это реализовать? По дефолту не получится?
Вообще-то в симе нет понятий «минимальный форсаж» и «максимальный форсаж», есть просто форсаж и усе. Можно считать что минимальный форсаж — это РУД от 95% до 100%, а Shift+F4 вызывает максимальный форсаж.
По дефолту анимировать не получится, но это не страшно, за редким исключением вообще все детали лучше анимировать кастомными анимациями.
Итак, допустим на оборотах 80% сопло прикрывается, на 95% приоткрывается а на полном форсаже открыто полностью. Закрыто: кадр=0, открыто: кадр=50.
От 0 до 80% РУД сопло потихоньку закрывается. (A:GENERAL ENG THROTTLE LEVER POSITION:1, percent) изменяется от 0 до 80, соответственно кадр должен изменяться от 0 до 50, откуда зависимость кадр=РУД*0.625
От 80% до 95% лопатки неподвижны. кадр = 50.
От 95% до 100% лопатки приоткрываются, скажем до кадра 30, откуда зависимость кадр=-4*РУД/3+157.
Если включен форсаж (А:AFTERBURNER ON, bool) — не уверен насчет названия переменной — то кадр=0
Хороший и подробный туториал. Спасибо большое.
Но , мне кажется , один момент упущен. Дело вот в чем…
столкнулся с проблемой при создании шасси .Взять дефолтный Боинг-747, при отрыве передней стойки…так скажем , тележки основных стоек ведут себя не хорошо. Задняя часть «утопает» в полосе , передняя же приподнимаеться…т.е. тележка не подвижная. На скрине автора в этой теме, видно что при отрыве передней стойки , тележки остаются в плоскости полосы. В чем секрет?
Поиском не нашел ответа и SDK не дает ответа. Здесь этот момент упущен, так как основные шасси взяты готовыми.
Прошу помочь в этом вопросе.
samdim
11.02.2007 в 10:33
шасси взяты от Ту-124, если посмотреть на модель то они себя ведут правильно и никуда не утопают.
Есть две техники. Правильная и неправильная.
Неправильная : используется когда нет кастомной анимации (ФСДС) или ей лень заниматься. Шасси на кадре 100 выставляются в «висячее» положение. Поскольку пустой крафт на земле соответствует кадру 150, то между кадрами 100 и 150 достаточно анимировать тележку чтобы она переходила из висячего положения в лежачее. Экспериментально было выяснено что лучше всего анимировать между 100 и 110-120. Можно также симулировать наклон фюзеляжа при взлете/посадке играя с наклоном тележки в зависимости от кадра. Метод не очень точный, но в «нормальных» ситуациях ведет себя достаточно приемлемо. Примеры: Ил-86, Ил-96, Ту-114…
Вторая техника правильная : кастомная анимация. Тележка привязывается к дополнительной кастомно анимированой части (или сама тележка является ею). Анимация базируется на принципе что угол наклона тележки это со знаком минус угол атаки самолета (A:PLANE INCIDENCE, degrees) конечно же когда самолет на земле. У каждого видимо своя техника, примеров есть немало. Самые закрученые привязаны к конкретному самолету и выслеживают (A:RADIO HEIGHT, feet). В моем случае я использую один и тот же код, который хорошо подходит к туполевым. Примеров у меня пока два : Ту-124 и Як-42, но в моделях зашито уже не раз: Ту-134, Ан-12, Ту-128.
Scorpio9999
12.02.2007 в 05:09
У меня другой вопрос про XML есть.
Можно ли (не имея приборов) устанавливать значение переменной для детали «А» в зависимости от значения переменной для детали «Б»?
Если да, то пример в студию пожалуйста.
И есть ли ограничения по этому в случае кастомных и дефолтных объектов.
Есть мысли для трафа, но не знаю как технически это реализовать.
samdim
12.02.2007 в 09:57
Переменные L: в коде XML являются общими на всю модель. Ничего не мешает использовать одну переменную в коде нескольких анимаций.
Пример в студию: в эрбусе есть кресло 2 пилота а за ним откидное сидение. Когда кресло пилота отъезжает назад сидение складывается — его код проверяет значение переменной контролирующей позицию кресла.
если есть фотография с выпущенными закрылками то мне кажется что все ясно. Сколько может быть разных способов для закрылка выпуститься из одного положения в другое по дуговой траектории ? Важно только понять систему крепления закрылка, а их не так много:
— неподвижная ось внутри закрылка (все мелкие самолеты, Ил-14)
— неподвижная ось вынесеная ниже закрылка в обтекатель (DC-9, DC-10, Dornier 328)
— рельса проходящая внутри закрылка (Ан-12, Ан-24, Ил-18, Ил-62, Ту-104 — Ту-134, B707)
— рельса вне закрылка в обтекателе (Boeing начиная с 727, все Airbusы, Ил-86, Ту-154, Як-42)
Теперь с шасси.
Я Ил-76 не изучал, но мне кажется что он попадает в раздел ломающейся стойки. Лишь с тем отличием что у него колесная тележка вдобавок поворачивается вдоль фюзеляжа. У Б-52 тоже поворачивается и у Ту-144 тоже, но по-другому. Но все эти стойки имеют в базе треугольник с одной ломающейся стороной которая становится на замок. У амфибий типа Бе-12 свой тип стоек. Частные случаи всегда были и будут. Тут уж можно выделить в одну категорию «поджимающиеся» шасси как на Ан-8, Ан-22, Ан-124 или А400М.
Но как бы стандартна ни была конструкция стойки, фотографии все равно нужны, так как детальки у каждой стойки свои.
Допустим, что чертежи в фотошопе уже подгтовлены. Переходим в 3Д макс.
Создаем примитив BOX (1), задаем геометрические размеры параллелепипеда, равные геометрическим размерам самолета (2), добавлям модификатор NORMAL для того, чтоб «вывернуть наизнанку» наш параллелепипед (3).
Прикрепленные изображения
Прикрепленные изображения
Далее выбираем 1-ый подматериал и присваиваем ему текстуру, т.е. наш чертеж. Не забудем в свитке Blin basic parametrs присвоить значение 100 параметру SELF ILLUMINATION.
Прикрепленные изображения
Сообщение отредактировано Fishbed: 18 January 2007 — 21:51
Прикрепленные изображения
Прикрепленные изображения
Повторяем то же для оставшихся подматериалов.
Порой может появиться неприятная вещь ( см скрин. ) в окне проекци ЛЕФТ мы видим чертеж раком, хотя вид «слева» на чертеже лежит в нашей рамке…
Прикрепленные изображения
Значение W=90 сделало чертеж «не раком», а значени U = 180 сделало вид на чертеж «слева» ( если оставить 0, то будет вид на чертеж «справа», т.е. чертеж зеркально отобразиться в другую сторону )
з.ы. я для видов справаслева использую один и тот же чертеж ( т.е. в файле ЖПГ тока одна проекция ), а разворачиваю его, меняя значение U c 0 на 180 и наоборот
Прикрепленные изображения
Конечно каждому нравится свой метод размещения чертежей… но это на любителя. С сечениями вообще все просто делаю: в фотошопе на картинку накладываю сечение ( просто новый layer с сечением в фотошопе )… Когда сечение не нужно, иду в фотошоп, делаю LAYER невидимым, сохраняю … сечения в максе нет
з.ы. прикладываю эдакий «бонус»… Чертеж, 3д макс файл с уже установленным чертежем ( тока укажите максу, где чертеж лежать будет — он спросит об этом) + грубая модель носа этого самолета. Нос создал за несколько минут для проверки размещения чертежей… и увы… все совпадает, кроме вида «спереди» — это проекция на чертеже оказалась кривой —
з.з.ы с размещением чертежа в максе м.б. есть косяк… на этот раз мой. То, что в проекциях справаслева передняя опора стоит на земле — это неправильно .. наверное ( башка че-то туго ща сыбражает что правильно, а что нет )…В этом случае геометрические хар-ки фюзеляжа в высоту не соответствуют реальности
Прикрепленные файлы
3D.zip 753.75К
593 Количество загрузок:
Сообщение отредактировано Fishbed: 18 January 2007 — 23:51
Дмитрий, во-первых Merci Boku за такой тутор.
На многие вещи я стал смотреть с другой стороны.
Однако вернёмся к текстурной развёртке, а точнее к альтернативному пути её создания. Версия 3DMax 8-я.
1. Берём деталь — фюзеляж, например.






2. Выделяем полигоны какие нам нужны, делаем плоский маппинг и сразу же выбираем размер текстуры в метрах. Т.е. какую площадь будет покрывать наш текстурный лист.
3. Делаем UVWUnwrap и тащим кусок в удобное для нас место.
4. В окне Edit UVWs в меню Tools выбираем пункт Render UVW Template.
5. В открывшемся окошке проверяем размер текстурного листа 1024×1024 (или ставим что нам нужно) и давим кнопарь в самом низу. Остальные параметры можно не трогать, но можно и поиграться.
6. Во вновь открывшемся окне видим болванку нашей текстуры для выделенных полигонов. Записываем как отдельный BMP файл.
Далее в послойном графическом редакторе такие картинки ставим в отдельные слои и редактируем. Убираем за краями детали чёрный фон в общем. Записываем картинку в оригинальном формате редактора и копию как обычный BMP файл для 3DMax собственно. В материале для самолёта делаем рефреш текстуры.
Ну и повторяем всё вышеизложенное для остальных поверхностей.
eсли выбрать группу полигонов из модификатора Editable Poly а затем задать на эту группу UVW mapping как сделали вы то после этого невозможно будет задать UVW mapping на другую группу полигонов,например на вторую половинку вашего фюзеляжа.
Поэтому сначала поверх editable poly кидается модификатор poly select или mesh select-уже в нем выбирается группа полигонов-затем уже поверх него uvw mapping-затем unwrap-располагаем кусок на листе.
Затем опять поверх всего-poly select(mesh select)-выбираем новую группу полигонов-снова uvw mapping и unwrap-и так далее-отдельный модификатор poly select для каждой группы полигонов.В итоге коллапсим стек-кидаем unwrap и видим всю нашу модель порезанную на выкройки.
Render UVW-очень полезная фича-но к сожалению существует только в восьмом максе.
Для предыдущих версий можно использовать бесплатный плагин под названием Texporter-он делает тоже самое и немножко больше.Хотя я если работаю в максе делаю просто скриншот окна юв эдитора раскрыв его на весь монитор.
У каждого самолета они как правило разные. Процесс создания шасси довольно трудоемкий и долгий, хотя конкретно никаких сложностей в нем нет. Просто много деталей — много возни. В Ту-128 ситуация нетипичная. Судя по фотографиям — его шасси как две капли воды напоминают шасси Ту-124. Удивляться тут не приходится — самолеты одной эпохи, одного конструкторского бюро, близкие по весу… Так так так, а кто здесь делал модель Ту-124 недавно ? Я 🙂 То есть шасси для Ту-128 у меня уже есть. Воспользусь оказией для пояснения еще одной техники которую можно употреблять если у вас уже есть модель с которой хочется позаимствовать деталек. Это merge. Выбираем в меню File / Merge. Предлагеет открыть файл. Находим Ту-124, открываем. Перед нами — иерархия его объектов, выбираем все что связано с шасси
затем мерж задаст еще несколько вопросов типа «в сцене уже есть деталь с таким названием. Что делать ? 1 — всунуть как есть, 2 — старую заменить новой, 3 — ничего не делать, 4 — переименовать новую». В нашем случае этот вопрос не должен возникнуть так как мы импортируем новые детали. Но мерж можно использовать также чтобы синхронизировать несколько параллельных проектов с одинаковыми деталями (как например А318-А319-А320-А321). Тогда этот вопрос возникает.
Следующий вопрос звучит примерно так «деталь А была прилинкована к детали Б, а в сцене уже есть такая деталь. Что делать ? 1 — пусть А будет прилинкована к Б из сцены, 2 — порвать линк». Обычно выбираем 1.
Дальше вопрос с материалами. Если у импортируемого объекта материал называется также как один из материалов в сцене, то выскакивает такой диалог:
1 — новый объект остается со своим материалом. Будет создан новый материал с тем же названием что и один из материалов в сцене. Другими словами — потом запутаетесь в два счета.
2 — новому объекту присваивается материал из сцены.
3 — будет создан новый материал но с другим названием.
Обычно выбор падает на 2, но в данном случае ситуация такая, что шасси на Ту-124 отмапены на листе который ничего не имеет общего с текстурами Ту-128. Временно импортируем создав новый материал, а потом присвоим деталям шасси материал из Ту-128 и расставим UVW маппинг где-нибудь скажем на текстуре крыла.
Закончив импорт получаем шасси которые конечно расположены черти где. Двигаем их на нужное место. Мда — придется править ногу основной стойки и приводной шток выпуска/запуска
Но в общем ничего трагического, анимация осталась, маппинг есть, сейчас поправим ногу стойки и будет все ок.
Проделывам аналогичные операции с передней стойкой.
В шасси очень важно соблюдать иерархию объектов, не забывать делать Reset Scale, и тщательно контролировать анимацию, добавляя фреймы если надо чтобы все тяги не вылетали из шарниров. Номера фреймов тоже важны. Кадр=0 — шасси запущены. Кадр=100 — выпущены, висят в воздухе. Кадр=150 — стоят на земле, самолет пустой. Кадр=200 — максимальное сжатие. В корне всей структуры шасси должна лежать деталь c_wheelwell (соответственно l_wheelwell, r_wheelwell для основных стоек). Она пропадает когда шасси запущены — следовательно они не отрисовываются за закрытыми створками и не потребляют фпс. Само собой, если шасси не запускаются или запущенные шасси видны то эту деталь ставить нельзя.
показаны фреймы. От 2 до 30 — открываются створки. От 30 до 70 выпускаются шасси. От 70 до 100 закрываются створки. От 100 до 200 сжимается амортизатор. Почему створки открываются от 2 а не от 0 ? Потому что если они открываются в 0, то в момент открытия появляется деталь c_wheelwell — а с ней и сами шасси. Створки успевают слегка приоткрыться прежде чем шасси вырисовываются, что влечет за собой появление на долю секунды яркой щели по периметру створок. Отодвинув начало открывания на 2 фрейма мы даем шасси время появиться. Кстати на Ту-128 передние стойки не закрываются при выпущеных шасси, так что насчет 70-100 я вас обманул.
А вот и сама иерархия объектов передней стойки и последовательность выпуска
опуская детали, цепочка линков выглядит так: c_gear_stojka — c_wheel — c_gear_ammortizator — c_tire. Особого внимания заслуживает деталь c_wheel. Она может быть просто дамми. Она отвечает за поворот переднего колеса, причем если самолет стоит на месте, то колесо не поворачивается. Анимация у нее такая. Кадр 100 : колесо смотрит прямо вперед. Кадр 150 : колесо развернуто назад, на 180° (по часовой стрелке). Кадр 200 : колесо смотрит снова прямо вперед (развернувшись по часовой стрелке от предыдущего положения). То есть между кадрами 100 и 200 c_wheel заставляет колесо сделать полный оборот. Конечно на большинстве самолетов колесо не может сделать полный оборот. Но максимальные углы затем ограничиваются в динамике, а анимация поворота должна в любом случае делать полный оборот.
Давно пора было компильнуть, займемся этим делом сейчас.
Экспортируем модель. Используем для этого плагин Panda. На скрине мои настройки Панды.
Записывам скажем в файл tu128.X
Создаем папку для этого самолета в FS2004/Aircraft, назовем ее Tu-128. Проще всего скопировать какой-нибудь похожий самолет а потом навести порядок в самой папке. Я взял для примера Ту-124 — у него наверняка и автопилот похожий и ход стоек одинаковый… Потом динамщики разберутся с движками, поведением, расходом… Это уже не мое дело, я в этом не понимаю.
Надо аккуратно проследить что все ссылки указывают на правильные файлы. В Aircraft.cfg смотрим в первую секцию [fltsim.0]
имя в title должно быть одно на весь сим. Параметр sim=Tu-128 означает, что должен быть файл Tu-128.air. Параметры model, sound, panel, texture не имеют значений, это значит что должны быть папки model, sound, panel, texture. Если бы было например texture=redArmy08, то это значит должна быть папка texture.redArmy08 — и так далее. В папке model лежат два файла: model.cfg и файл мдл. Проверить что в файле model.cfg ссылка указывает именно на файл мдл (без расширения мдл).
В Фотошопе добавляем альфа-канал к нашим текстурам. Пока что белый (т.е. без эффекта), разве что где-нибудь надо капнуть серым иначе imagetool проигнорирует альфу. Сохраняем в формате битмап 32 бит, помещаем в папку textures. Теперь открываем каждый лист текстуры в imagetool, проверяем что он в 32 бит и сохраняем. Сохранять надо обязательно, иначе сим вылетит.
Запускаем MakeMdl.exe и выбираем экспортный файл tu128.X, модель которую мы щас делаем tu128.mdl, лезем в закладку Options, ставим галочки как на скрине и жмем ОК. Компилирует… Важно поставить галочки именно как на скрине.
можем даже попробовать взлететь
фпсы пока не жрет
Кстати обратите внимание — на первом скрине конус заборника запущен, на последнем — выпущен. Мы помнится анимировали его назвав именем konus_zabornika и используя кадры от 0 до 20. Так вот, прежде чем компилировать, я добавил в makemdl.parts.xml определение для кастомной анимации конуса:
<part> <name>konus_zabornika</name> <animation> <parameter> <code> (A:RADIO HEIGHT, meters) 150 < if{ 20 } els{ 0 } </code> <lag>10</lag> </parameter> </animation> </part>это конечно неправильная анимация с технической точки зрения, но в описании сказано: конус запущен на земле и на взлете а в остальное время выпущен. Ну я и рассуждаю тогда : если самолет находится на высоте меньше 150м то конус запущен, иначе — выпущен. На языке makemdl это записывается так:
(A:RADIO HEIGHT, meters) 150 < if{ 20 } els{ 0 }
или по-русски: если переменная A:RADIO HEIGHT (в метрах) имеет значение меньше 150 (< означает «<» на XML чтобы не путать с тэгами), то фрейм 20, иначе фрейм 0. А чтобы из положения 0 в положение 20 конус не перескакивал а плавно отъезжал — я добавил параметр <lag>10</lag> который означает что анимация едет со скоростью 10 фреймов в секунду, т.е. наш конус из одного положения в другое переедет за 2 секунды.
Следите за правописанием в коде ХМЛ. Он страшно хрупкий, в лучших традициях микрософта. Например после if и els не должно быть пробела, а после фигурной скобки должен быть. Названия переменных я черпаю из СДК.
Делаем пилоны. Вытягиваем ребро крыла
Снабжаем борт ракетами. Все это операции простые, хоть и немного муторные. Добавлю, что несмотря на перенос шасси из Ту-124 пришлось провозиться еще несколько часов расставляя маппинг на листе tu128_wings_t.bmp
В результате получаем самолет издали уже похожий на Ту-128. Не хватает еще множества деталек, но с Миг-21 уже не спутаешь.
фпс за 330 на моей средненькой карте 6600GT 🙂 Просто когда фпсов оооочень много, то они прыгают, иногда весьма высоко. Вот вам и доказательство что количество полигонов не убивает фпс.
Завтра добавим деталек.
Сначала делаем одну. Загибаем слегка, добавляем не то ребра жесткости не то приводные тяги, по две на каждую лопатку. Перемещаем пивот поинт в центр кольца — лопатки располагаются по кругу вокруг этого центра. Затем жмем на Shift и поворачиваем лопатку на 30°. Она дублируется, при этом выскакивает диалог. Выбираем «Instance» и 11 копий.
Теперь анимиурем все 12 лопаток одновременно. Выбираем их всех. Пока что пивот находится в центре кольца (1). Выбираем Pivot / Center to Object, пивоты распределяются по лопаткам (2). Двигаем вдоль оси Y до края лопаток (3). Это и будет их конечное положение. Теперь, все еще с выбраными лопатками, анимируем их все сразу. Устанавливаем их в открытое положение в кадре 50, закрытое в кадре 0. (4-5). Чтобы в закрытом положении лопатки не въезжали друг в друга, выбираем каждую вторую и чуточку прикрываем их. Теперь копируем все 12 лопаток и помещаем копии на второе сопло. Получили анимированые сопла, смотрится вполне эффектно.
Добавим еще пару деталек — приборную панель и открывающиеся заслонки (кастомная анимация — вот ее код :

(A:RADIO HEIGHT, meters) 350 < (A:GENERAL ENG THROTTLE LEVER POSITION:1, percent) 60 > && if{ 20 } els{ 0 }
,
Экспортируем, компилируем, смотрим в симе. Кстати, это скрин номер 100. За сто скринов мы научились довольно многому. В общем, изложенного в этом туториале достаточно чтобы успешно закончить внешнюю модель. Поэтому не буду утомлять вас скринами типа «сделали еще одну антенку». Доделаю мелочи на досуге, затем займемся ВК.
Вопрос — как это сделано ? Особенно плавное нарастание яркости голубого пламени.
Подсказка: здесь 6 уровней яркости, но с тем же успехом можно сделать и 26, просто фпсы жалко. Одно из решений — делать детальку с текстурой пламени в 6 экземплярах с разной яркостью и создать для каждой visibility condition через кастомный ХМЛ код. А если уровней яркости 26 ? Такое решение неэлегантно 😉
1 : внутренность сопла (форсажная камера)
2 : стопка прозрачных дисков
3 : диск с нарисованым голубым пламенем
4 : дамми prop0_blurred
5 : конус из светящегося материала
сопло находится справа.
Диск с голубым пламенем (3) прилинкован к дамми prop0_blurred (4). Это обеспечивает ему вращение а также условие на его появление — когда двигатель выключен, диск пропадает.
Прозрачные диски (2) имеют материал с прозрачностью 40%, цвет черный, спекулар черный. При виде снаружи они закрывают диск с пламенем. Их 4, значит их общая прозрачность равна 1 — 0.4*0.4*0.4*0.4 = 98% то есть диска практически не видно.
Диск с пламенем анимирован через lever_throttle1 — когда тяга увеличивается диск сдвигается в сторону сопла и пересекает прозрачные диски. Таким образом, придвинувшись к соплу его сначала закрывают 4, потом 3, потом 2 прозрачных диска, потом один, потом ни одного. Соответственно яркость пламени растет всякий раз. При приближении к максимальному значению РУДа, анимированый желтый конус (5) выдвигается занимая весь объем форсажной камеры. При этом включается эффект форсажа (о том как — после).
Относительный сдвиг диска в сторону сопла не заметен, потому что прозрачные диски расположены близко друг к другу. Как видите, ничего не мешает поставить не 4 а хоть 24 прозрачных диска, уменьшив соответственно их прозрачность — при этом переход синего пламени от темного к яркому будет абсолютно плавным. Но я пожалел графический движок сима, тяжко бедному считать 24 степени прозрачности…
Вот так, век живи — век изобретай 🙂
ну и вид сбоку
Начиная с некоторых оборотов ( зависит от типа двигателя ) сопло полностью прикрывается (для получения максимальных тяговых характеристик);
Максимал — сопло по-прежнему прикрыто ;
Минимальный форсаж — сопло приоткрывается, но не полностью;
Полный форсаж — сопло открыто практически полностью, остаётся небольшой запас для регулирования, но для сима это можно игнорировать.
Отсюда вопрос — как всё это реализовать? По дефолту не получится?
Вообще-то в симе нет понятий «минимальный форсаж» и «максимальный форсаж», есть просто форсаж и усе. Можно считать что минимальный форсаж — это РУД от 95% до 100%, а Shift+F4 вызывает максимальный форсаж.
По дефолту анимировать не получится, но это не страшно, за редким исключением вообще все детали лучше анимировать кастомными анимациями.
Итак, допустим на оборотах 80% сопло прикрывается, на 95% приоткрывается а на полном форсаже открыто полностью. Закрыто: кадр=0, открыто: кадр=50.
От 0 до 80% РУД сопло потихоньку закрывается. (A:GENERAL ENG THROTTLE LEVER POSITION:1, percent) изменяется от 0 до 80, соответственно кадр должен изменяться от 0 до 50, откуда зависимость кадр=РУД*0.625
От 80% до 95% лопатки неподвижны. кадр = 50.
От 95% до 100% лопатки приоткрываются, скажем до кадра 30, откуда зависимость кадр=-4*РУД/3+157.
Если включен форсаж (А:AFTERBURNER ON, bool) — не уверен насчет названия переменной — то кадр=0
Откуда получаем код для кастомной анимации:
(A:AFTERBURNER ON, bool) 1 == if{ 0 } els{ (A:GENERAL ENG THROTTLE LEVER POSITION, percent) s0 80 < if{ l0 0.625 * } els{ l0 95 > if{ 157 1.33 l0 * - } els{ 50 } } }Но , мне кажется , один момент упущен. Дело вот в чем…
столкнулся с проблемой при создании шасси .Взять дефолтный Боинг-747, при отрыве передней стойки…так скажем , тележки основных стоек ведут себя не хорошо. Задняя часть «утопает» в полосе , передняя же приподнимаеться…т.е. тележка не подвижная. На скрине автора в этой теме, видно что при отрыве передней стойки , тележки остаются в плоскости полосы. В чем секрет?
Поиском не нашел ответа и SDK не дает ответа. Здесь этот момент упущен, так как основные шасси взяты готовыми.
Прошу помочь в этом вопросе.
Есть две техники. Правильная и неправильная.
Неправильная : используется когда нет кастомной анимации (ФСДС) или ей лень заниматься. Шасси на кадре 100 выставляются в «висячее» положение. Поскольку пустой крафт на земле соответствует кадру 150, то между кадрами 100 и 150 достаточно анимировать тележку чтобы она переходила из висячего положения в лежачее. Экспериментально было выяснено что лучше всего анимировать между 100 и 110-120. Можно также симулировать наклон фюзеляжа при взлете/посадке играя с наклоном тележки в зависимости от кадра. Метод не очень точный, но в «нормальных» ситуациях ведет себя достаточно приемлемо. Примеры: Ил-86, Ил-96, Ту-114…
Вторая техника правильная : кастомная анимация. Тележка привязывается к дополнительной кастомно анимированой части (или сама тележка является ею). Анимация базируется на принципе что угол наклона тележки это со знаком минус угол атаки самолета (A:PLANE INCIDENCE, degrees) конечно же когда самолет на земле. У каждого видимо своя техника, примеров есть немало. Самые закрученые привязаны к конкретному самолету и выслеживают (A:RADIO HEIGHT, feet). В моем случае я использую один и тот же код, который хорошо подходит к туполевым. Примеров у меня пока два : Ту-124 и Як-42, но в моделях зашито уже не раз: Ту-134, Ан-12, Ту-128.
Можно ли (не имея приборов) устанавливать значение переменной для детали «А» в зависимости от значения переменной для детали «Б»?
Если да, то пример в студию пожалуйста.
И есть ли ограничения по этому в случае кастомных и дефолтных объектов.
Есть мысли для трафа, но не знаю как технически это реализовать.
Пример в студию: в эрбусе есть кресло 2 пилота а за ним откидное сидение. Когда кресло пилота отъезжает назад сидение складывается — его код проверяет значение переменной контролирующей позицию кресла.