×
Menu

NiRenderedTexture - local nif glitches

Пространное примечание.
 
Увы, использование NiRenderedTexture непосредственно в локальных ниф файлах - сомнительное занятие.
Однако тесты в этом направлении имели место быть и даже много раз. ^-^
Отчего и появилась эта заметка. Как говорится, не пропадать же "добру"? :)
Получить изображение с камеры и наложить оную в качестве текстуры - не получается.
А получаемая, в ряде случаев прозрачность объекта, по факту является неким багом и не отличается от обычных альфа свойств по своему виду.
Также, она не может быть настроена дополнительно.
Вероятное объяснение этому багу - некие ссылки внутри движка, как альфа свойств, так и NiRenderedTexture идущие в один и тот же адрес памяти.
Также было замечено, что в NiRenderedTexture имеет определенные проблемы с наложением прозрачности.
Это хорошо видно в инвентаре, если игрок берет в руки (к примеру) оружие имеющие ореол свечения.
Вместо красивого свечения, будут видны его полигоны и черный фон вокруг текстуры.
Это дополнительно показывает некую "связь" этих объектов внутри движка игры.
Баг ли это, или это нормально - вопрос открытый.
 
Получить же, то самое интерактивное отражение в локальных ниф файлах, к сожалению, так и не представляется возможным.
Вероятно по причине необходимости установки связи NiRenderedTexture с камерой.
А самое главное, создания дополнительных настроек для указания размера получаемой текстуры!
Собственно именно в этом моменте и происходит преткновение.
Т.к. NiRenderedTexture не имеет дополнительных полей в которых можно было бы указать ссылку на файл (куда будет рендериться текстура), а равно и размер оной.
Попытки изменять ссылки и значения типовых полей (Name, Extra Data, Controller) не приводили к положительным результатам.
Т.е. указания различных значений в этих полях, ни к чему не приводило. Разве что, можно задать значение в поле имени.
Равно, прочие тесты по смене типов записей для РендерТекстуры в ниф.хмл файле, приводили, в основном, к вылетам игры.
Т.е. вместо string указывалось float или что-то иное.
Возможно, размер текстуры задается в каком-то другом элементе движка.
Есть мнение, что это niRenderer который не может быть добавлен в ниф файлы.
Т.е. все попытки внедрения оного объекта в файл, приводят к сообщению редактора и игры: can't create function.
 
Также проводились множественные попытки изменять настройки камеры, в надежде установить связь с NiRenderedTexture и обратно.
И здесь отмечались некоторые "достижения", к сожалению, также не стабильные.
Единственное, что удавалось менее более получать стабильно - целевой объект получал, или не получал прозрачность.
Также, по SSG можно было отметить, что наличие камеры в ниф файле, таки меняет значения размера NiRenderedTexture!
Однако, все значения получались плавающими и никак не проявляли себя.
Т.е. поверхность объекта оставалась обычной без каких либо намеков на наложение рендерной текстуры.
 
Подытоживая.
- NiRenderedTexture можно прописать в качестве свойств любому объекту. Нода, шейп и пр.
В этом случае, появляется (интересная) возможность увидеть дополнительные поля NiRenderedTexture по SSG.
- если в файле нет камеры, то получивший NiRenderedTexture, в качестве свойств, объект станет прозрачным. Вероятно это флаг альфы 13 или 4621.
- наличие камеры в ниф файле влияет на NiRenderedTexture вне зависимости от каких либо дополнительных "связей" с ней.
Т.е. это можно увидеть по SSG если NiRenderedTexture была прописана в качестве свойств.
- NiRenderedTexture может быть указана и в качестве Extra Data любого объекта.
В этом случае, ее также можно видеть по SSG.
Но на целевой объект, по видимости, это никак себя особо не проявляет.
Т.е. эффект от экстра свойств не отмечается, или отмечается в приделах поправки на "внезапный баг" см. далее.
- если NiRenderedTexture указана в качестве свойств и в файле есть камера, вероятность вылетов игры возрастает.
Поверхность объекта работает в обычном режиме. Т.е. прозрачность, или иные эффекты не появляются.
- если NiRenderedTexture прописана только в качестве текстуры, поверхность объекта в игре станет белой.
Либо засвеченной, если NiRenderedTexture добавлялась в детайл, или дарк слот.
Наличие камеры не влияет.
Если прописано и как свойства, может снова появиться прозрачность.
- если NiRenderedTexture прописывается только в текстурные слоты, SSG никак не покажет ее в сцене.
Т.е. настройки niSourceTexture назначенных в niTextureProperties нельзя увидеть во всех подробностях.
Но если указать NiRenderedTexture или niSourceTexture в качестве Экстра свойств ноды, или шейпа, появится возможность увидеть дополнительные поля.
В т.ч. и размер текстуры.
 
Можно сделать предположение, что камера, все же как-то отрабатывается игрой, но получить стабильную картинку с оной не получается, по независящей от камеры причины.
 
Т.е. за прошедшие пару лет (NiRenderedTexture была раскопана в 2020ом) никаких прорывов достичь, к сожалению, не удалось.
Хотя тесты проводились массовые и "суровые". ))
В ходе множества тестов было получено лишь много подобной малоценной информации.
Либо нужны особо мощные колдунства с МВСЕ (которые так и не были получены, к сожалению), либо одно из двух.
Остается лишь жалеть, что столь простой и полезный элемент не получается также просто и легко накладывать на локальные поверхности.

Захваченное в бинарный файл, с помощью МВСЕ, меню игрока.
Здесь можно видеть запись о NiRenderedTexture.
Которая, как раз и показывает "отражение" персонажа.
К сожалению, помещенная в игру модель, будет показывать лишь белую поверхность.
То что игрок как бы за меню, "заслуга" z-буфера с флагом 0.
Который применяется к моделям меню.
И примеры тестов посредством нифскопа...
 
NiRenderedTexture в качестве свойств.
В файле нет камеры!
То что показывает SSG.
Вот эти два поля, как раз и отвечают за размер текстуры.
В файл была добавлена камера.
И прозрачность сразу исчезла.
По SSG видно, как изменилось одно из значений размера.
Что и привело к изменению отображения объекта.
Объект клонирован несколько раз... мало ли, а вдруг что-то сработает! ))
Все что получилось, это заметить, как сменилось значение размера текстуры.
Увы, оно показывает все что угодно, но не то что требуется.
При этом, сам ниф файл, не менялся!
Объекты были смещены в сцене и окно рендеринга редактора было масштабировано, чтобы обновить кадр.
Теперь РендерТекстура была добавлена еще и в слот Detail.
А также указана в качестве экстра свойств шейпа.
Снова появилась прозрачность.
И значения размера сбросилось в нули.
Т.е. отмечается влияние "прозрачного" слота.
Смена слотов!
РендерТекстура встала на слот базовой текстуры.
А базовая текстура ушла на слот Детайла.
Освещение в сцене выключено.
По SSG значения Рендер Текстуры = 0, 0
 
Свет выключен.
Экстра свойства отключены.
Снова вернулось одно из значений размера текстуры.
Если это не был случайный баг, то РендерТекстура в качестве экстра свойств объекта, может оказывать некоторое влияние!
Возможно, если также была указана на правах обычных свойств.
Ниф файл.
Камера - настройки по умолчанию. Т.е. все по нулям.
Рендер Текстура не имеет собственных полей для настроек.
Попытки их добавлять в том, или ином виде, стабильно приводили к ошибкам can't create **** и им подобным.
Здесь добавлено имя и указана экстра дата.
Ссылка на обычную текстуру.
Да, такое оказывается вполне возможно.
 
Ничего принципиально не изменилось.
И вот так оно стало выглядеть по SSG.