![]() |
Цитата:
|
Цитата:
/*synthetic*/ static Class class$com$maddox$il2$objects$air$CockpitIL_10_TGun ner; Property.set (var_class, "cockpitClass", (new Class[] { (class$com$maddox$il2$objects$air$CockpitIL_10 == null ? (class$com$maddox$il2$objects$air$CockpitIL_10 = class$("com.maddox.il2.objects.air.CockpitIL_10")) : class$com$maddox$il2$objects$air$CockpitIL_10), (class$com$maddox$il2$objects$air$CockpitIL_10_TGu nner == null ? (class$com$maddox$il2$objects$air$CockpitIL_10_TGu nner = (class$ ("com.maddox.il2.objects.air.CockpitIL_10_TGunner" ))) : class$com$maddox$il2$objects$air$CockpitIL_10_TGun ner) })); |
Где задаются углы поворота внешней модели туррели?
С кокпита крутиться вокруг а внешне как пропеллер. |
Мозги кипят больше чем от ИИ кода от этих мешей ,углов и т.д
|
Хук от оружия если я в кокпит сделаю будет стрелять?
|
И еще дайте значения для экспорта для 3д макс из меш конвертера.
|
Цитата:
По записи пропертиса для кокпита: допустим, даже если на языке джавы ваша запись правильная, то для Ила это ещё не значит что будет понятно прочитать и выполнить команду., это мой вывод из наблюдений в классах - похоже что Ил сличает команды или код какой либо записи с тем что у него записано в основных классах., то есть - понятно ли для будет для Ила текст этого(вами приведённого ) кусочка: Property.set (var_class, "cockpitClass", (new Class[] { (class$com$maddox$il2$objects$air$CockpitIL_10 == null ? (class$com$maddox$il2$objects$air$CockpitIL_10 = class$("com.maddox.il2.objects.air.CockpitIL_10")) : class$com$maddox$il2$objects$air$CockpitIL_10), (class$com$maddox$il2$objects$air$CockpitIL_10_TGu nner == null ? (class$com$maddox$il2$objects$air$CockpitIL_10_TGu nner = (class$ ("com.maddox.il2.objects.air.CockpitIL_10_TGunn er" ))) : class$com$maddox$il2$objects$air$CockpitIL_10_TGun ner) })); Может быть от того что я не шибко ещё продвинутый в классах, но не стал бы писать такие куски в классе кокпита, а посмотрел бы что и как пишеться в классе кокпит пилот и - возможно - сделал бы копию класса кокпит пилота, типа: CockpitPilot_A extends CockpitPilot и уже там пытался прописывать кардинальные изменения. Вы уж простите что так накалякал - вступая в дискуссию/разговор, таким способом пытаюсь повысить свою образованность, читая ответы более грамотного мододела. |
Цитата:
CockpitPilot все остольные идут от него по этому типу CockpitPilot_A extends CockpitPilot и есть 2 CockpitPilot_A extends CockpitGunner это основной для кокпита стрелков. CockpitIL_10_TGunner extends CockpitGunner. Точно так же есть основной класс серии самолета например Bf109 в нем прописаны основные данные а все остальное наследуется из Bf109. Bf109E4 extends Bf109 |
Cockpit вот даже главный класс. public class CockpitGunner extends Cockpit implements HookGunner.Move
CockpitGunner этот наследует данные из него а осольные по самолетам из CockpitGunner. public class CockpitPilot extends Cockpit и тут так же, а кокпит от ил2 или ил10 или Бф109 наследуют данные из CockpitPilot |
Ну это всё понятно для меня., я написал замечания от того что не смотрел сам класс кокпита Ил-10, поэтому текст показался подозрительным. Звыняйтэ!
Почему завёл разговор - хочеться поделиться соображениями - я делал(переписывал) класс кокпита МБ-174 под патч 4.10.1 и классы стрелка и бомбардира., пришлось повозиться изрядно., правда - настроить правильную стрельбу из пулемёта стрелка не смог - там буд-то пули выскакивают не из ствола, а из барабанов пулемёта и огоньок выстрелов так же прикреплён к нему., в общем - игрался дней пять и забросил до лучших времён. Про что я хочу сказать - куски кода из патча 4.12.2 не хотят работать в патче 4.10.1, более того, поначалу при включении кокпита бомбёра - игру вибивало на рабочий стол, пока не додумался наполнить класс кодами из мода кокпита бомбёра В-25., моя мысль такая - я бы поочерёдно подставлял коды от разных кокпитов стрелка что бы сначала включился/запустился кокпит в игре, а уже следующим шагом вставлял бы функции(хуки мешей и их работа) для тех потребностей которые хочу иметь в моде. Как то так - извините за сумбурность изложения мыслей. |
Цитата:
|
Я переделывал только на ил2м внешний пулемет стрелка , но там я позицию модели брал такую же как у оригинала и нормально получалось.
|
Вложений: 2
Вот кокпитная модель крутиться по кругу нормально, а вот внешняя не по той оси.
|
Цитата:
переделывая гироскопичный прицел для патча 4.12.2 я увидел такие ньюансы - в классе кокпита обязательно указываеться конкретный класс самолёта где код работы гироскопа должен увидеть продолжения команд., типа - как должен работать гироскоп применительно к кренам самолёта и т.д., так же - по работе открывалки кокпитов - там конкретно указываеться какой меш должен двигаться и название совпадает с названием в папке планес самолёта., эти меши двигаються по осям и они конкретно вписаны в оба класса., делая открывалку внешки для И-185 и Яка-9, получилось подставить команды от Хаята, скорректировав цыфры для более правильного движения крышки фонаря по направляющим., не только двигал цыфры, но и менял местами в строке - так получилось заставить крышку фонаря у Яка-9 двигаться назад, а двигалась и вверх и вбок и т.д., я это пишу вам с надеждой что хоть небольшая польза будет от меня для настройки ваших модов., перенастроить движения по осям не очень сложно - я внимательно посмотрел команды в классах из различным модов, сравнивая между собой и пазл стал складываться в голове, стал немного догонять как это работает. Примеры для внешки: Як-9 public void moveCockpitDoor(float f) { resetYPRmodifier(); Aircraft.xyz[0] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, -0.62F); hierMesh().chunkSetLocate("Blister1_D0", Aircraft.xyz, Aircraft.ypr); if(Config.isUSE_RENDER()) { if(Main3D.cur3D().cockpits != null && Main3D.cur3D().cockpits[0] != null) Main3D.cur3D().cockpits[0].onDoorMoved(f); setDoorSnd(f); } } И-185 public void moveCockpitDoor(float f) { resetYPRmodifier(); Aircraft.xyz[1] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 0.0197F); Aircraft.xyz[2] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, -0.65F); Aircraft.ypr[2] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 1.0F); hierMesh().chunkSetLocate("Blister1_D0", Aircraft.xyz, Aircraft.ypr); if(Config.isUSE_RENDER()) { if(Main3D.cur3D().cockpits != null && Main3D.cur3D().cockpits[0] != null) Main3D.cur3D().cockpits[0].onDoorMoved(f); setDoorSnd(f); } } Хаят public void moveCockpitDoor(float f) { resetYPRmodifier(); Aircraft.xyz[1] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, -0.01845F); Aircraft.xyz[2] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, -0.635F); Aircraft.ypr[2] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 1.0F); hierMesh().chunkSetLocate("Blister1_D0", Aircraft.xyz, Aircraft.ypr); if(Config.isUSE_RENDER()) { if(Main3D.cur3D().cockpits != null && Main3D.cur3D().cockpits[0] != null) Main3D.cur3D().cockpits[0].onDoorMoved(f); setDoorSnd(f); } } Райден public void moveCockpitDoor(float f) { resetYPRmodifier(); Aircraft.xyz[1] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 0.0198F); Aircraft.xyz[2] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 0.65F); Aircraft.ypr[2] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 1.0F); hierMesh().chunkSetLocate("Blister1_D0", Aircraft.xyz, Aircraft.ypr); if(Config.isUSE_RENDER()) { if(Main3D.cur3D().cockpits != null && Main3D.cur3D().cockpits[0] != null) Main3D.cur3D().cockpits[0].onDoorMoved(f); setDoorSnd(f); } } Я не хочу быть задавакой - просто хочеться чем то помочь. А вообще у меня немного творческий кризис/простой:cool: в мододелании., хотя недоделынных модов ворох лежит. :I'm_thinking: |
Цитата:
|
public void moveGun(Orient orient) {
super.moveGun(orient); mesh.chunkSetAngles("Turret1A", -orient.getYaw(), 0.0F, 0.0F); mesh.chunkSetAngles("Turret1B", 0.0F, orient.getTangage(), 0.0F); } public void clipAnglesGun(Orient orient) { float f = orient.getYaw(); float f_0_ = orient.getTangage(); float f_1_ = Math.abs(f); for (/**/; f < -180.0F; f += 360.0F) { /* empty */ } for (/**/; f > 180.0F; f -= 360.0F) { /* empty */ } for (/**/; prevA0 < -180.0F; prevA0 += 360.0F) { /* empty */ } for (/**/; prevA0 > 180.0F; prevA0 -= 360.0F) { /* empty */ } if (!isRealMode()) prevA0 = f; else { if (bNeedSetUp) { prevTime = Time.current() - 1L; bNeedSetUp = false; } if (f < -120.0F && prevA0 > 120.0F) f += 360.0F; else if (f > 120.0F && prevA0 < -120.0F) prevA0 += 360.0F; float f_2_ = f - prevA0; float f_3_ = 0.001F * (float) (Time.current() - prevTime); float f_4_ = Math.abs(f_2_ / f_3_); if (f_4_ > 120.0F) { if (f > prevA0) f = prevA0 + 120.0F * f_3_; else if (f < prevA0) f = prevA0 - 120.0F * f_3_; } prevTime = Time.current(); if (f_0_ > 89.0F) f_0_ = 89.0F; if (f_0_ < cvt(f_1_, 140.0F, 180.0F, -1.0F, 25.0F)) f_0_ = cvt(f_1_, 140.0F, 180.0F, -1.0F, 25.0F); orient.setYPR(f, f_0_, 0.0F); orient.wrap(); prevA0 = f; } } |
Это движение в самом кокпите моделей.
|
public void setHumanControlledTurretAngels
(Turret turret, float[] fs, HierMesh hiermesh, ActorHMesh actorhmesh) { fs[0] = fs[1] = fs[2] = 0.0F; fs[1] = turret.tu[0]; hiermesh.setCurChunk(turret.indexA); actorhmesh.hierMesh().chunkSetAngles(fs); fs[1] = turret.tu[1]; hiermesh.setCurChunk(turret.indexB); actorhmesh.hierMesh().chunkSetAngles(fs); } Вот еще нарыл |
Извините!
Отсутствовал пару дней на сайте - работа, однако, на мододелание времени не было. Мои мысли: вот это - public void clipAnglesGun(Orient orient) { float f = orient.getYaw(); float f_0_ = orient.getTangage(); float f_1_ = Math.abs(f); for (/**/; f < -180.0F; f += 360.0F) { /* empty */ } for (/**/; f > 180.0F; f -= 360.0F) { /* empty */ } for (/**/; prevA0 < -180.0F; prevA0 += 360.0F) { /* empty */ } for (/**/; prevA0 > 180.0F; prevA0 -= 360.0F) { /* empty */ } - примерно - отвечает за то что турель смотрит по курсу., собственно, я думаю, это - prevA0 += 360.0F; ориентация - остальное - как она крутиться., а вот эта команда - prevTime = Time.current(); if (f_0_ > 89.0F) f_0_ = 89.0F; if (f_0_ < cvt(f_1_, 140.0F, 180.0F, -1.0F, 25.0F)) f_0_ = cvt(f_1_, 140.0F, 180.0F, -1.0F, 25.0F); orient.setYPR(f, f_0_, 0.0F); orient.wrap(); prevA0 = f; } } по идее должна быть и не внешке, в основном классе самолёта., это я предполагаю, опираясь на логику., меши пулемёта должны сообразно двигаться с тем что происходит в кокпите. Я, честно говоря, не сильно ковырял многомоторники с несколькими кабинами., но можно посмотреть что написано в том же Бостоне, в классах, как там синхронизированы движение турелей в разных видах или в СБ-2М, так же. У меня нет вашего класса с 3До, но если бы я делал поворот турели, то - прежде всего - открыл себе несколько классов из похожих самолётов с турелями, даже открыл бы класс Джипа, и пытался бы подставлять коды управления турелью/пулемётом., я подобно делаю когда нужно что то настроить - это мне помогает понять что и как работает. |
Цитата:
|
Скиньте мне - пожалуйста - в личку ваш класс и 3До, я тоже попробую., если очень сопротивляеться, то это уже становиться интересным. Я ни на что не претендую - просто хочеться потренироваться:rtfm: :I'm_thinking: и, помочь, конечно же. :rolleyes:
|
Цитата:
|
Цитата:
|
В кабине бомбардира ТБ-3 катается карандаш, в кабине Рамы качается бинокль... К классе можно прописать смену одного меша другим, получится анимация.
|
Меш может содержать в себе несколько фреймов. Солдатики так сделаны, парашют и парашютисты. Может ещё чего, не помню сейчас. Анимация происходит за счёт переключения фреймов. Как конкретно в игре это переключение осуществляется можно наверное в классе парашютиста смотреть. Но может управление фреймами и где-то в другом месте осуществляется.
Внутри одного меша может быть несколько различных фаз движения. Номер стартового фрейма и кол-во фреймов для фазы нигде в данных меша не сохранён. Вероятно эти значения где-то в коде класса жестко забиты. Сама реализация такой анимации простая как пятак. По таймеру, через определённые интервалы, просто последовательно отрисовываются заранее просчитанные фреймы. Тут основная работа, это изготовление соответствующей модели. Ну и ещё один момент. Возможно Иловский движок может работать с костями (bones которые). Но работает ли это и как работает (если поддержка есть) не знаю. По крайней мере в самой оригинальной игре таких моделей нет. Хотя в коде какая-то загрузка данных связанных с костями есть. Может ничего нового и не рассказал. :) Тогда заранее простите за боян. :) |
Тот же движок только со снятыми заглушками использует игра 2 я Мировая откуда уже утянуто множество моделей. Так вот там кости солдат, трава и самозатенение включены.
Правда пользователи этой игрухи жаловались на ресурсоемкость но это было давно когда деревья были большими а память компов была маленькой. |
Цитата:
Движок то почти тот-же, визуальная часть движка в ИЛ-2 это в основном графическая ДЛЛ. А вот без перекомпиляции с добавлениями для включений дополнительных возможностей организовать сами возможности невозможно. Так как полных исходников, необходимых для создания НОВОЙ графической ДЛЛ нету и никогда уже не будет, то увы Андрей, просто забудь про то что есть во Второй мировой и нету в ИЛ-2:( |
Цитата:
Собственно, именно по этому в своё время и возник БоБ. Чтоб ехать дальше нужно было перебираться на новую платформу. Правда - не задалось перескочить мягко. |
Дык рукописи не горят и может кто и сохранил исходники которые всплывут. Но вот без серьезной психиатрической помощи богоизбранным тут надежды мало.
|
Цитата:
|
Цитата:
|
Цитата:
Attaching Х Х Х Х Х Х Х Х Х Х Х Х при внесении которых в Hier.him, в игре эти меши располагались так же как и в сцене в максе? |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Нужен IL2 Exporter plugin for 3DS MAX by 6S.Maraz На SAS его переделывали для разных версий макса (ссылки у меня нет). |
Цитата:
|
Спасибо за ссылку, но, к сожалению, ни один плагин не подошёл к моему 3ds max 9 X64bit
|
Цитата:
|
Текущее время: 09:41. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot