Я про другой скрипт говорю. При запуске скрипта в сцене будет создаваться скелет с анимацией. Реализация процесса через скрипт позволяет отвязаться от версии редактора, скрипт будет одинаково работать в любом случае.
Я про другой скрипт говорю. При запуске скрипта в сцене будет создаваться скелет с анимацией. Реализация процесса через скрипт позволяет отвязаться от версии редактора, скрипт будет одинаково работать в любом случае.
Вот как отлично спасибо и за это )) буду ждать и эту версию скрипта )
Всем привет! Подскажите пожалуйста названия файлов - спринт со щитом и спринт с мечом. Заранее благодар
Бег с одноручным мечом: MT_SprintForwardSword.hkx - MT_SprintForward.hkx Бег с двуручным мечом: 2HM_RunForward.hkx 2HM_SprintForwardSword.hkx
Бег со щитом не знаю, по умолчанию вроде персонаж не бегает в игре со щитом, а значит название этого типа анимации следует искать в моде который предоставляет возможность бегать со щитом.
Ps. что бы найти нужную анимацию любую, вам всего лишь нужно зайти в Creation Kit открыть любого NPC отметить галочку Preview перейдя в вкладку персонажа Animations и просмотреть название любой анимации.
anton, в Блендере есть очень интересная функция переноса развесовки костей с одной модели на другую. Скажем, с тела на броню или с одной брони на другую. Я ожидал там найти и аналогичную функцию для переноса текстурной развёртки, но пока не нашёл. А ведь тот же механизм можно было бы использовать для переноса текстурных развёрток UV. Например, скопировать текстурную развёртку с одного тела на совершенно другое. Алгоритм мог бы быть таким: 1. Переносим текстурную развёртку в привязку к трём костям. Т.е. каждый вертекс оказывается привязан к трём костям. Первые две очевидны - текстурные координаты вертекса X и Y. Но только надо, чтобы они были в диапазоне от 0 до 0.5 каждая, т.е. масштабировать текстурную развёртку. Третья кость Z = 1 - X - Y. Нужна только для того, чтобы Блендер не нормировал сумму двух первых на единицу. 2. О переносим развесовку с одного тела на другое. 3. Переводим развесовку в тукстурные координаты UV. Всё должно проходить относительно корректно, кроме крайних точек второго тела, которые оказались за пределами текстурной развёртки первого. Их придётся править вручную или расширять текстуру для них.
anton, влоб не получается. Ругается Object: DG Body, Mesh: '0.029' has 22668 loops (for 7556 faces), expected 28038 Как я понял из описания в Интернете, перенос возможен только при идентичности геометрии. Переносу весов это не требуется.
Myprism, а, ну это может быть. Я сам эту функцию никогда не использовал, и нашёл её только потому что ты о ней спросил Протестировал её на 2-х одинаковых кубиках и UV отлично перенеслось.
А вес вертекса всё таки совсем другое дело чем UV, поэтому вполне вероятно что для переноса UV геометрия по любому должна быть идентичной. Ведь вес просто отпределяет влияние на группу вертексов постороннего обьекта (косточки арматуры), в то время как UV описыват саму поверхность данного конкретного обьекта и напрямую связана с его формой.
anton, перенести UV-развёртку с одного объекта на другой с той же топологией проще блокнотом, чем Блендером. Открываем OBJ блокнотом, копируем все строки с VY из одного в другой. Вместо Ьлендера - Ctrl+C Ctrl+V.
Цитата anton
А вес вертекса всё таки совсем другое дело чем UV,
Это для нас он - другое дело. Для софта это только набор значений переменных, т.е. всё то же самое дело Понимаешь, для переноса развесовки костей авторы Блендера реализовали очень интересную вещь - трёхмерную интерполяцию. Так как вертексы моделей не совпадают, они находят ближайший треугольник и раскидывают веса по его вершинам, видимо, пропорционально расстояниям до них. Если пропорционально, то это линейная интерполяция. Скорее всего, там она. Но возможна ещё и бикубическая (с учётом других окружающих точек, используется в Фотошопе). Во втором случае, для текстур отрабатывались бы даже краевые точки. Самому писать такой код для двумерного случая неприятно, вот я и придумал механизм обмана Блендера через кости. Кроме того, скриптовый язык Блендера мне пока не знаком. Максимум, что я там делал, это расширил максимальное число вертексов (выделение памяти) для некоторых одёжек от Newmiller (у него число вертексов превысило допущенное тобой ).
Изменение репутации для пользователя anton
antonOffline
Сообщение №1690
написано: 9 января 2015, 19:56
| Отредактировано: anton - 9 января 2015, 19:56
Myprism, в 3Д редакторе количество вертексов превысить то можно, но тогда НИФ файл сделать не получится. Максимальное число точек в одном блоке NiTriShapeData может быть не более 65535 (2 байта). Таков формат этого файла, больше туда не засунуть
Всё равно не представляю как так можно перенести UV "поверхность" одной модели на другую модель с другой формой. Наверное проще содать второй модели свой UV, а потом пытаться подогнать его 2D форму UV развёртки под 2D форму UV развёртки 1-й модели. Но всё это не менее мутно, чем идея с костями, и скорее всего по нормальному не реализуемо.
ПС: скрипты блендера пишутся на Питоне (Python). Это достаточно распространённый язык и много где применяемый.
anton, насчёт максимального числа вертексов. В цепочечной модели брони от NewMiller одна часть содержит 52300 вертексов, другая - 18000 и ещё несколько по мелочи. В кирасе Суккуба - 17000. Помню только, что твой скрипт в первоначальном варианте на неё ругнулся и мне пришлось менять выделяемую под массив память. как видишь, эти цифры меньше задаваемых двумя байтами. У тебя там, как я понял, допускается только 10000. Насчёт транспонирования UV. Согласись, что "не представляю как так можно перенести UV "поверхность" одной модели на другую модель с другой формой" и "нельзя это сделать" - не эквивалентные утверждения Собственно говоря, самый эффективный способ опровергнуть "нельзя это сделать", это взять и сделать Но на это у меня совершенно нет времени, так что, я ничего опровергать пока не буду
alexwar, кстати, да, давно тебя не было видно Антон написал конвертер для многих возможностей NIF-ов в Блендер и обратно. С Новым Годом!
Добавлено (10 Января 2015, 17:14) --------------------------------------------- Столкнулся с проблемой. Если полупрозрачная шмотка погружается в воду, то она становится совершенно прозрачной. Это если смотреть на неё сверху через поверхность воды. Если погрузиться в воду самому, то часть шмотки под водой ведёт себя правильно, а прозрачной становится часть её над водой. Т.е. некорректно отображаются 2 полупрозрачные поверхности одна за другой. Это неизбежное зло, или лечится настройкой флагов альфа-канала?
Изменение репутации для пользователя HuntWolf
HuntWolfOffline
Сообщение №1694
написано: 12 января 2015, 09:38
| Отредактировано: HuntWolf - 12 января 2015, 09:39
anton, влоб не получается. Ругается Object: DG Body, Mesh: '0.029' has 22668 loops (for 7556 faces), expected 28038 Как я понял из описания в Интернете, перенос возможен только при идентичности геометрии. Переносу весов это не требуется.
Модель может быть не идентична, главное что бы совпадало кол-во вертеков UV и меш. Ведь UV и мешь строго взаимосвязаны т.е точка №1 меша равна например точки №18(или нескольким точкам) UV это прямой алгоритм который нельзя нарушить или собъётся порядок следования точек(их нумерация). В весах же совсем другое, там инфа хранится в RGB вертекс колоре, которым как мы знаем мы может не просто в значениях 0 до 100% как это сделано у весов переносить, точнее перепакать, а даже текстурить можем в значениях от 0 до 255 в трех каналах плюс от 0 до 100 в альфе, т.е при переносе весов мы выполняем операцию запекания вертекс колора с одной модели на другую, со всеми вытекающими ограничениями, т.е модели по формам должны быть схожи, конечно плюс и топология должна соответсвовать. Честно горя для таких уж не сложных моделек сделать новую ювишку не вижу проблем больших и потом уже перепечь текстуру с одной на другую
HuntWolf, не верно. Переносить развёртки UV можно не зависимо от расположения вертексов в модели. Их расположение и порядок следования не изменится. Но математически это не просто, поэтому не все редакторы могут. При обсуждении этого вопроса в интернете, утверждается, что переносить текстурную развёртку не зависимо от топологии и числа вертексов умеет только Майя.
Нет майка не умет то имен то что вам надо, там погрешность как например и в ювилоате будет зависть от 2-3 вертексов, и я как раз нигде и не написал что расположение должно быть одинаково, плюс важно кол-во швов(как раз вот кол-во вертекос в модели), я же сразу написал что модель может быть не идентично можно хоть с кубика на шарик переносить, важно кол-во точек в модели а не их место расположение так как у UV координат значения относительные т.е пропорциональны двум осям U и V которые всегда от 0 до 1 если не считать минуса при тайле. А так может в принципе любой редактор переносить с кубика на шарик, даже в убогой синьке(в плане юви убога) это делается на раз. Про то о чем вы горите это в принципе алгоритм нормальный не возможен, теоретически это должно быть блендшеп со сто процентной точностью в значениях т.е виртуальная машина понимающая что вам надо, так как в начале должны перестроится точки под новые порядковые номера(кординаты не важны), переписаться вся геометрия, добавить новые там где нет(оставив старые кординаты, но присвоив порядковые номера новые), должен быть алгоритм сканирования в пространстве котрый будет находит ближайшую и присваивать её значениям с другой модели или добавлять при отсутствии, а вот уже потом он может её присвоить координаты уже развертки к новым значениям вертексов модели
HuntWolf, имеем 2 модели А и Б с разным числом вертексов и разной их топологией. Берём вертекс n модели А. Ищем ближайший к нему полигон (треугольник) модели B. У треугольника модели B есть три вершины, привязка которых к текстуре B известна. находим точку на текстуре Б, удалённую от вершин найденного треугольника в том же соотношении, как и расстояния точки n до вершин треугольника. Это только один из возможных способов проекции. Таким образом, мы находим точку на текстуре Б, соответствующую вертексу n на текстуре А. Это только один из возможных алгоритмов, причём, самый примитивный. Раз такой алгоритм существует, значит, транспонирование текстур возможно в ПРИНЦИПЕ. Проблема будет только с крайними вертексами, которые выходят за пределы другой текстуры. В случае шва появляется неоднозначность позиционирования крайних вертексов. Но и это решается автоматически выбором из всех возможных вариантов минимально выходящий за пределы другой текстуры. Anton рассказывал, как он даже автоматически подгонял броню по телу. Так вот, его задача была посложнее, хотя и похожа. Теперь вернёмся к развесовке костей. Никакой это не RGB. Это редактор нам рисует цветную картинку, но на этом всё сходство кончается. Цвет - трёхмерная величина. Привязка к костям - многомерная (один вертекс может быть привязан к многим костям (в Скайриме - к четырём). Каждый вертекс это запись из нескольких величин. Это его 3 координаты, это его текстурные координаты, это проекции нормали к нему, это тангенциальные проекции его нормали на текстуру. И это весовые коэффициенты (до 4-х) к костям. С точки зрения математики и компьютера - эти величины в записи ничем не различаются, кроме алгоритмов их обработки. А алгоритмы задаёт программист. Программисты блендера УЖЕ сделали перенос развесовки с вертексов одной модели на другую с совершенно другим числом вертексов и их топологией. Они сделали транспонирование для четырёх величин из записи. Теперь берём и меняем эти четыре величины на текстурные координаты. Мы просто переставляем величины в записи под названием "вертекс". Причём, переставляем те величины, которые не влияют на форму объекта (координаты и направление нормали) по которым это транспонирование происходит. Т.е. не нарушаем сам процесс транспонирования. Специфика работы с весами заключается в том, что все веса одного вертекса в сумме должны быть равны 1, т.е. нормированы на единицу. (Это же относится и к нормали.) Чтобы не нарушить этот механизм я и предложил вместо двух текстурных координат U и V использовать три: U/2, V/2 и 1 - U/2 - V/2. Никакие сторонние соображения, что это не работает - не катят. Либо это надо сделать, тогда это будет доказательством, что это работает, либо найти ПРИНЦИПИАЛЬНУЮ ошибку в моих рассуждениях. Да и не просто ошибку, но такую, которая бы вела к невозможности. Вот только тогда это будет доказательством невозможности.
Столкнулся с проблемой. Если полупрозрачная шмотка погружается в воду, то она становится совершенно прозрачной. Это если смотреть на неё сверху через поверхность воды. Если погрузиться в воду самому, то часть шмотки под водой ведёт себя правильно, а прозрачной становится часть её над водой. Т.е. некорректно отображаются 2 полупрозрачные поверхности одна за другой. Это неизбежное зло, или лечится настройкой флагов альфа-канала?
Да, я тоже пытался понять почему так, пробовал настраивать флаги, но не вышло...видимо я неглубоко вник в вопрос...а потом как всегда не хватило время...:))
alexwar, там слишком много параметров, чтобы настраивать их методом тыка Ведь чтобы увидеть подлинный результат, надо каждый раз грузить игру. Надо бы иметь хоть какие предпосылки... Кроме флагов альфы там же ещё можно и шейдерные флаги менять.
Добавлено (13 Января 2015, 11:29) --------------------------------------------- alexwar, нашёл я флаг, лечащий исчезновение полупрозрачной модели в воде. Это оказался SLSF1_Decal. Он позволяет наложить одну полупрозрачную поверхность поверх другой. Сначала нашёл это в другом месте, где мучился с полупрозрачным рисунком поверх светящегося столба, а потом попробовал и в воде. Там тоже работает. Но не работает под водопадами. Видимо, этот флаг должен стоять у той поверхности, что находится ближе к нам, или у обоих.
Myprism, мне тоже интересно, сегодня попробую, может решу и свою проблему с прозрачностью. А то у меня при взгляде на полупрозрачную поверхность через другую полупрозрачную поверхность текстура "разбивается" на треугольники (словами трудно описать такой глюк, єто надо видеть).
Люди, помогите! Решил сделать новый шлем переделкой драконьего панцирного, загнал в Макс, туда же пихнул еще одну ванильную модель (из клютеров) все подогнал, экспортировал, исправил в нифскопе. В результате сначало КК ругался на отсутствие ShinyDull_e.dds (он про друое орал, но я нагуглил что в этом причина ) и вылетал. Я добавил эту самую ShinyDull_e.dds в обе модели, КК стал просто вылетать при открытии модели. Методом тыка определил что виноват АльфаПроперти из оригинального шлема. Удалил его. Результат: та часть шема, которая из клютера (череп тролля) отображается и в КК и в игре, а та, что переделана из шлема нет Притом таже фигня если просто добавить часть черепа в ванильную модель шлема. В чем проблемма и как ее исправить?
посмотри самый простой тутор в Ютубе , как моделить шлем и все вопросы отпадут
Я немного про другое. 100500 раз писалось, есть проблемные файлы, обращаетесь за помощью - приложите материал. Что можно понять из фразы <<загнал в Макс, туда же пихнул еще одну ванильную модель (из клютеров) все подогнал, экспортировал, исправил в нифскопе>>?
Загнал, пихнул, подогнал, исправил - вроде всё правильно, должно работать.
Меняю ИД АрморАддона потом через выбор модели для каждого пола (правда модель пока одна) Тут не в конструкторе дело а в моделе, я в КС делал сборки для себя вручную так что умею им пользоваться