подскажите, как сделать так, чтобы при вхождении в купальню (бассейн и т.п.) НПС раздевался, а при выходе - одевался?
Вот тут персонажка раздевается при входе в ЛЮБУЮ воду и одевается при выходе. Там же она раздевается при заходе в баню. Автор мода - очень хороший скриптовик.
Осталась у меня нерешённая проблема с видом от первого лица колечек на нестандартных слотах брони. Точнее, проблема не с видом (он для любого слота устанавливается в свойствах расы), а с совместимостью. Ведь изменение ванильных рас очень чревато несовместимостью с другими модами. Может, кто знает, как можно обойтись без занимания слотов или сделать так, чтобы много колечек одевались в один слот? Видимость я их обеспечу размещением на разных фалангах пальцев. Но вот как сделать, чтобы они все висели на одном из стандартных разрешённых для вида от первого лица слоте? Скажем, если все будут на слоте кольца или перчатки или тела, лишь бы не вытесняли кольцо, перчатки или тело?
1Game, насчёт драконов. Они такие же персонажи, как и любые другие. Т.е, чтобы дракон появился, надо его туда поставить (маркер дракона). В принципе, в Данстаре есть дракон, но я не знаю, долетает ли он до твоего острова. Если нужен, то лучше его там сделать своего. Отличие дракона от других НПС только в том, что он не пользуется навигационной сеткой. Вместо неё он использует карту высот ячейки. Чтобы дракон не летал сквозь новые стены, надо перегенерировать карту высот ячейки.
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 Как я понял из описания в Интернете, перенос возможен только при идентичности геометрии. Переносу весов это не требуется.
anton, перенести UV-развёртку с одного объекта на другой с той же топологией проще блокнотом, чем Блендером. Открываем OBJ блокнотом, копируем все строки с VY из одного в другой. Вместо Ьлендера - Ctrl+C Ctrl+V.
Цитата anton
А вес вертекса всё таки совсем другое дело чем UV,
Это для нас он - другое дело. Для софта это только набор значений переменных, т.е. всё то же самое дело Понимаешь, для переноса развесовки костей авторы Блендера реализовали очень интересную вещь - трёхмерную интерполяцию. Так как вертексы моделей не совпадают, они находят ближайший треугольник и раскидывают веса по его вершинам, видимо, пропорционально расстояниям до них. Если пропорционально, то это линейная интерполяция. Скорее всего, там она. Но возможна ещё и бикубическая (с учётом других окружающих точек, используется в Фотошопе). Во втором случае, для текстур отрабатывались бы даже краевые точки. Самому писать такой код для двумерного случая неприятно, вот я и придумал механизм обмана Блендера через кости. Кроме того, скриптовый язык Блендера мне пока не знаком. Максимум, что я там делал, это расширил максимальное число вертексов (выделение памяти) для некоторых одёжек от Newmiller (у него число вертексов превысило допущенное тобой ).
elenucia1981, сами персонажи ничего делать не могут. Им ставят задания, т.н. AI-пакеты. Обычно стоит DefaultSandBox. Но таких пакетов в игре много и их можно создавать ещё. В них можно давать задания ходить из одного места в другое по расписанию и при задаваемых условиях. Если строго, то даже без пакетов персонаж минимальную деятельность всё же организует. Это значит, что что-то вроде минимального SandBox у них стоит в любом случае, даже если и не показывается в редакторе.
anton, насчёт максимального числа вертексов. В цепочечной модели брони от NewMiller одна часть содержит 52300 вертексов, другая - 18000 и ещё несколько по мелочи. В кирасе Суккуба - 17000. Помню только, что твой скрипт в первоначальном варианте на неё ругнулся и мне пришлось менять выделяемую под массив память. как видишь, эти цифры меньше задаваемых двумя байтами. У тебя там, как я понял, допускается только 10000. Насчёт транспонирования UV. Согласись, что "не представляю как так можно перенести UV "поверхность" одной модели на другую модель с другой формой" и "нельзя это сделать" - не эквивалентные утверждения Собственно говоря, самый эффективный способ опровергнуть "нельзя это сделать", это взять и сделать Но на это у меня совершенно нет времени, так что, я ничего опровергать пока не буду
SkyBorn, не забудь только, что игра видит BSA-архив только в том случае, если рядом лежит ESP-файл с тем же названием и он установлен в загрузчике игры.
alexwar, кстати, да, давно тебя не было видно Антон написал конвертер для многих возможностей NIF-ов в Блендер и обратно. С Новым Годом!
Добавлено (10 Января 2015, 17:14) --------------------------------------------- Столкнулся с проблемой. Если полупрозрачная шмотка погружается в воду, то она становится совершенно прозрачной. Это если смотреть на неё сверху через поверхность воды. Если погрузиться в воду самому, то часть шмотки под водой ведёт себя правильно, а прозрачной становится часть её над водой. Т.е. некорректно отображаются 2 полупрозрачные поверхности одна за другой. Это неизбежное зло, или лечится настройкой флагов альфа-канала?
Изменение репутации для пользователя Myprism
MyprismOffline
Сообщение №1032
| Тема: Вопросы по текстурированию
написано: 12 января 2015, 04:25
| Отредактировано: Myprism - 12 января 2015, 04:32
HuntWolf, Насчёт "Обжект спейс". Мне тяжело с этим жаргоном, так как я с ним не знаком. Это специфический рассейский жаргон - коверканье русской транскрипции англоязычных терминов. Но в Скайриме есть 2 типа карт нормалей. - Один тип используется для объектов и брони в том числе. Это карта нормалей мелких неровностей. Она складывается в игре с нормалями вертексов моделей. Т.е. в игре мы видим суммарное действие. При этом вертексы моделей брони чаще всего сглажены, т.е. эти иодели не имеют острых рёбер. Острота рёбер вынесена в карту нормалей. Собственно говоря, это то, для чего карта нормалей задумывалась изначально - для дополнения низкополигональной модели мелкими деталями. - Второй тип используется только для тел. В NIF-ке там прописан Skin Tint в качестве типа шейдеров и поставлен шейдерный флаг SLSF1_Model_Space_Normals. В этом случае ВСЯ форма вынесена в карту нормалей. Нормали вертексов в этой модели не используются совсем. Почему так? Не знаю. Это повышает требования к качеству карты нормалей (её сжатию) и, на мой взгляд, создаёт только проблемы.
Если с NPC всё снять. Потом надеть на него какой-то предмет. А потом удалить у него этот предмет, то он надевает обратно всю стандартную одежду...
Только немножко уточню. Персонаж одевает всю одежду из списка своего Outfit после удаления последней шмотки из него. Тут есть одна заковыка: одним только Оутфитом персонаж пользуется в том случае, если не взят в компаньоны. Если же он в компаньонах то он сам выбирает лучшую шмотку из обоих списков: своего инвентаря (там те шмотки, что выдал ему игрок) и оутфит. Если у него отобрать всё, то инвентарь он не восстановит. Восстановится только оутфит.
HuntWolf, не верно. Переносить развёртки UV можно не зависимо от расположения вертексов в модели. Их расположение и порядок следования не изменится. Но математически это не просто, поэтому не все редакторы могут. При обсуждении этого вопроса в интернете, утверждается, что переносить текстурную развёртку не зависимо от топологии и числа вертексов умеет только Майя.
HuntWolf, имеем 2 модели А и Б с разным числом вертексов и разной их топологией. Берём вертекс n модели А. Ищем ближайший к нему полигон (треугольник) модели B. У треугольника модели B есть три вершины, привязка которых к текстуре B известна. находим точку на текстуре Б, удалённую от вершин найденного треугольника в том же соотношении, как и расстояния точки n до вершин треугольника. Это только один из возможных способов проекции. Таким образом, мы находим точку на текстуре Б, соответствующую вертексу n на текстуре А. Это только один из возможных алгоритмов, причём, самый примитивный. Раз такой алгоритм существует, значит, транспонирование текстур возможно в ПРИНЦИПЕ. Проблема будет только с крайними вертексами, которые выходят за пределы другой текстуры. В случае шва появляется неоднозначность позиционирования крайних вертексов. Но и это решается автоматически выбором из всех возможных вариантов минимально выходящий за пределы другой текстуры. Anton рассказывал, как он даже автоматически подгонял броню по телу. Так вот, его задача была посложнее, хотя и похожа. Теперь вернёмся к развесовке костей. Никакой это не RGB. Это редактор нам рисует цветную картинку, но на этом всё сходство кончается. Цвет - трёхмерная величина. Привязка к костям - многомерная (один вертекс может быть привязан к многим костям (в Скайриме - к четырём). Каждый вертекс это запись из нескольких величин. Это его 3 координаты, это его текстурные координаты, это проекции нормали к нему, это тангенциальные проекции его нормали на текстуру. И это весовые коэффициенты (до 4-х) к костям. С точки зрения математики и компьютера - эти величины в записи ничем не различаются, кроме алгоритмов их обработки. А алгоритмы задаёт программист. Программисты блендера УЖЕ сделали перенос развесовки с вертексов одной модели на другую с совершенно другим числом вертексов и их топологией. Они сделали транспонирование для четырёх величин из записи. Теперь берём и меняем эти четыре величины на текстурные координаты. Мы просто переставляем величины в записи под названием "вертекс". Причём, переставляем те величины, которые не влияют на форму объекта (координаты и направление нормали) по которым это транспонирование происходит. Т.е. не нарушаем сам процесс транспонирования. Специфика работы с весами заключается в том, что все веса одного вертекса в сумме должны быть равны 1, т.е. нормированы на единицу. (Это же относится и к нормали.) Чтобы не нарушить этот механизм я и предложил вместо двух текстурных координат U и V использовать три: U/2, V/2 и 1 - U/2 - V/2. Никакие сторонние соображения, что это не работает - не катят. Либо это надо сделать, тогда это будет доказательством, что это работает, либо найти ПРИНЦИПИАЛЬНУЮ ошибку в моих рассуждениях. Да и не просто ошибку, но такую, которая бы вела к невозможности. Вот только тогда это будет доказательством невозможности.
MaxBlur, статей нет, но можно посмотреть в игре. Противно только то, что Хертфай полностью меняет квест женитьбы. Это значит, что если использовать переделку ванильного квеста, то нужно делать 2 версии мода - для Хертфая и без. Теоретически там можно свой квест создать и запускать его вместе с ванильным, но у меня кишка тонка, не дружу с диалогами :(.
alexwar, там слишком много параметров, чтобы настраивать их методом тыка Ведь чтобы увидеть подлинный результат, надо каждый раз грузить игру. Надо бы иметь хоть какие предпосылки... Кроме флагов альфы там же ещё можно и шейдерные флаги менять.
Добавлено (13 Января 2015, 11:29) --------------------------------------------- alexwar, нашёл я флаг, лечащий исчезновение полупрозрачной модели в воде. Это оказался SLSF1_Decal. Он позволяет наложить одну полупрозрачную поверхность поверх другой. Сначала нашёл это в другом месте, где мучился с полупрозрачным рисунком поверх светящегося столба, а потом попробовал и в воде. Там тоже работает. Но не работает под водопадами. Видимо, этот флаг должен стоять у той поверхности, что находится ближе к нам, или у обоих.
А то у меня при взгляде на полупрозрачную поверхность через другую полупрозрачную поверхность текстура "разбивается" на треугольники
В реализации оптических эффектов мы наталкиваемся на проблемы, связанные с тем. что они только имитируются. Например, мне очень понравилось преломление, пока я не разобрался с ним детальнее. В реальном преломлении происходит поворот луча. Т.е. правильно будет поворачивать мир за преломляющей поверхностью. Шейдеры же не поворачивают, а смещают. Ну, это понятно, так как шейдерами полное 3D не покрутишь. Но в результате, получается, что ближние объекты преломляются хорошо, а дальние - нет. Ещё я сталкивался с глюками в прозрачности в виде квадратов. Например, прозрачность очень не любит шейдерный флаг DoubleSide - сразу идут непонятные квадраты с разной прозрачностью. Но если сделать дубликат поверхности, инвертировать его и его нормали (хоть в НИФскопе) и объединить поверхности в одну модель, то будет полная реализация DoubleSide, но без глюков.
anton, а когда у тебя два слоя, они объединены в одну модель (в один шейп)? Это важно, два объединённых слоя работают совсем иначе, чем не объединённые. Ещё может помочь изменение размера одного из слоёв, чтобы они не совпадали пространственно. Для того, чтобы в стеклянной броне металл не выглядел как политый эмалью, я решил сделать дополнительный слой маску только для металлических деталей (стеклянные части в нём прозрачные за счёт альфа-канала). Так вот этот слой стал работать только после того, как я чуть приподнял (расширил) его над остальными.
Добавлено (14 Января 2015, 17:10) --------------------------------------------- Очень странно, что тебе не помогают 2 слоя. Дело в том, что у меня они срабатывают всегда. У меня довольно много полупрозрачной одёжки. Пока она на теле, двусторонность ей не нужна. Но совсем другое дело - вид в инвентаре. Я не люблю вид в инвентаре в виде коробок и всегда делаю модель, которую можно покрутить. Так вот в этом случае нужно, чтобы одёжка была двусторонней. Всегда спасают два разнонаправленных слоя с ОБЯЗАТЕЛЬНЫМ объединением их в один шейп.
Macropod, вылет редактора при загрузке мода может быть связан с тем, что мод требует некоторого мастер-файла (ESM), которого нет в игре. "Дети Неба" состоит из многих частей, довольно сумбурно устроен и запросто может быть, что тянет за собой некоторую ESM-ку. Ну, там на скелет или на расы.
Есть способ задавать Enable Parent к xMarkerActivator сразу для кучи выделенных предметов?
Могу ответить, что да Но способ не укажу Три дня назад столкнулся с этой проблемой. Тыкался по-разному, но был уставший и не зафиксировал, как получилось. Попробуй выделить сразу все, потом ПКМ на одном из предметов, и укажи ему родителя. Кажется, подключатся все.
elenucia1981, раз возникает проблема с написанием записки, не пишите её. Просто продублируйте существующую, т.е. сделайте копию. Бросьте её в Скайрим и посмотрите. Если всё в порядке, то просто измените там текст. Так станет понятно, где ошибка - в изготовлении записки или в написании текста. Алиасы, это псевдонимы объектов, используются в квестах.
Можно ли с помощью скриптов заменить ArmorAddon у некоторой брони? Хочется сделать шлем, у которого бы поднималось забрало. Модель сделал, забрало там можно крутить вокруг точки подвеса. Стал искать, как народ поступает в таком случае. Нашёл 2 мода. В одном есть две модели (открытая и закрытая), но никаких признаков их смены. В другом заменяется целиком шлем и делается это через скрипт, который висит на алиасе игрока в пустом самозапускающемся квесте! На всякий случай, скрипт такой:
- Во-первых, мне кажется слишком мудрёной такая реализация - Во-вторых, это получается, что для каждого открывающегося шлема мне надо вешать отдельный скрипт на игрока. - В третьих, на спутнике, как я понимаю, это работать не будет, так как там нет квестов, которые бы вешали этот скрипт на алиас спутника. - В четвёртых, скрипт переодевает не улучшенную броню и я не вижу способов её улучшать и зачаровывать. Как можно открывать забрало шлема?
1Game, дело в том, что обиженный он может побежать и без навмешей. Есть такая фишка. Если сделать некоторую локацию, сделать только маленький участок навмешей у входа (чтобы дверь привязать) и войти туда со спутником, то спутник может ходить за ГГ по всей остальной части локации, где навмешей нет. Для верности надо идти спиной вперёд и лицом к спутнику. Так, что, то, что побежал, ещё ни о чём не говорит. А вот буксовать персонаж может на криво сделанных коллизиях. С этим я сталкивался на некоторых лестницах Скайрима. Т.е. это ошибки в ванильных моделях. Чтобы персонаж не запинался, вертикальные и горизонтальные грани лестницы должны иметь общее ребро (объединены в одну поверхность и нормали их сглажены). А там бывают два ребра совпадающие по положению. В этом месте персонаж застревает, а игроку приходится подпрыгивать, чтобы пройти. Да, убедись ещё, что персонаж там проходит по габаритам (высоте).
elenucia1981, если не работает даже дубликат записки, то я бы не редактор переставлял, а всю игру с предварительным удалением папки Data и только потом поставил бы новый редактор.
Изменение репутации для пользователя Myprism
MyprismOffline
Сообщение №1046
| Тема: Вопросы по моделированию
написано: 17 января 2015, 04:37
| Отредактировано: Myprism - 17 января 2015, 04:42
Ctp@HnuK, посмотри, у твоего щита отсутствует (не установлен) флаг SLF1_Skined в BSLightingShaderProperty. Как раз он и отвечает за движение объекта вместе с костями. Ты взял щит из модели "щит на земле, вид в инвентаре", где этот флаг не стоит, а для экипированного щита флаг нужен.
По поводу именно стеклянного щита. Существует способ сделать в нём стекло прозрачным и преломляющим. Его можно посмотреть в моде на прозрачную стеклянную броню.
неужели в Creation Kit такой геморрой с созданием lod-ов деревьев?
Увы, да. "wall of trees bug" - теперь я знаю, как это называется. Надо ещё разобраться, как они это преодолевают. Мне это до сих пор не удалось. Дело вот в чём. При генерации ЛОДов деревьев редактором всё создаётся правильно в центральной части карты. Но правее середины рифтенского озера в ЛОДах деревьев уже нет, а все деревья оказываются свалены на некоторой границе проходящей с севера на юг через середину озера. Есть такая граница и слева.
А! Понял, что они делают! Они меняют деревья на соответствующий статик, а для статика такого барьера не существует. Кстати, это хоть и геморройное, но решения для моего случая. У меня одна локация с деревьями оказалась за левой границей.
Да, а обратно откатывать не нужно Нужно просто сохранить вариант мода ДО замены деревьев на статик. Замена производится ТОЛЬКО для генерации ЛОДов. Использовать потом надо изначальный вариант
У меня возникло желание сделать шлем с поднимающимся забралом. Из реально работающих модов на эту тему мне попался только один и он осуществляет это путём замены одной модели шлема на другую. Более правильно сделать это через анимацию, ведь это и есть анимация забрала. Сам я совершенно не имею опыта работы с анимациями. anton написал специальные утилиты для создания анимации для Скайрима в Блендере и я задал ему вопрос, про возможность использования для этого его аниматора тела и получил ответ:
3. Создаём нашу позу
Так как у меня шлем, то тут я задаю положение забрала. Поднятое или опущенное? Допустим, нормальное положение у меня будет поднятое, в бою - опущенное. Где в блендере мне надо поставить поднятое и где опущенное?
anton, да, я открыл пример из анимации 3. В анимации 4, действительно пирамидка. Загрузил туда шлем. Он у меня состоит из 4-х частей: 1. Забрало. В оригинале привязано только к одной кости - голове. 2. Сам шлем и два шейпа конского хвоста к нему. Всё зто было привязано не к одной кости, а к двум - ещё спина. В анимации 4 (пример называется Dummy.blend) пирамидка лежит на полу. Мой шлем повис над полом на высоте головы, как обычно. Так как пирамидка привязана к Bone_01, то я просто перенёс развесовку с неё на все детали шлема. Нужно ли шлему придавать определённое положение относительно лежащих на полу косточек? Читаю инструкцию из анимации 4:
4. Создаём анимацию своей модели.
Как?
Нужно ли делать анимацию для всего шлема, если двигаться будет только одно забрало? В случае с когтями россомахи, они у тебя выдвигаются, т.е. появляются. В случае забрала мне его нужно не создавать, а перемещать (вращать относительно точки подвеса). Что нужно будет привязывать к ability в этом случае.