-
Content Count
37 -
Joined
-
Last visited
Posts posted by MasterModeley
-
-
11 часов назад, john39 сказал:Приветствую всех,подскажите пожалуйста как соединить текстуры,интересен корнет - эм,есть 3d моделька из данной игрушки но текстурки не могу их соединить с помощью UnsplitAllDDS,может там нумерация должна быть с нуля но там 5 - 6, вот текстурки ссылка,помогите если кто сможет сделать слияние,за ранее спасибо
Нужны файлы с расширением *.0
Это заголовки файлов, без них собрать сложнее и не факт, что будет правильно.
Сконвертировал https://yadi.sk/d/9CZp1QQLQC6Z7Q
"Соединить" текстуры у меня не получается, так как это карты шейдеров.
- 1
-
19 часов назад, WCD сказал:А зачем WGшнику модели из другой игры а также методы распаковки?
Вы ошибаетесь. Я независимый исследователь :)
-
Итак, есть ли какие-либо новые идеи? Собираюсь сделать следующую попытку разобраться в раскраске моделей.
- 1
-
В 15.03.2016 в 17:39, Natsuru TV сказал:А есть гайд о том как вытянуть саму 3d модель танка? Что бы можно было ее потом крутить, вертеть как угодно и использовать в фотошопе, для создания превью для видео к примеру.
Удалось найти метод вытаскивания моделей?
Формат файлов моделей настолько запутанный, что у меня получилось вытащить модели только частично.
-
Это типа metalness и roughness для PBR шейдинга?
-
1 час назад, crazy_F0X сказал:нужно открыть hkx файл. Я со скайрима, если что. Особо в кодинге не разбираюсь, но в цэлом всё написанное понял
Возможно, вам подойдёт вот это https://github.com/figment/hkxcmd
-
Я не знаю, как и что там на самом деле, но делаю так:
для packedVertices по 32 бита данных на вершину = 10 + 11 + 11
$tx = ( ( $packed & 0xFFC00000 ) >> 22 ) / 0x3FF; //
$ty = ( ( $packed & 0x3FF800 ) >> 11 ) / 0x7FF;
$tz = ( $packed & 0x7FF ) / 0x7FF;для sharedVertices по 64 бита данных на вершину = 22 + 21 + 21
$tx = ( ( $packed >> 42 ) & 0x3FFFFF ) / 0x3FFFFF;
$ty = ( ( $packed >> 21 ) & 0x1FFFFF ) / 0x1FFFFF;
$tz = ( $packed & 0x1FFFFF ) / 0x1FFFFF;Получаются нормированные координаты. Масштаб и смещение подбирается из параметров 'codecParams' и/или 'domain'.
Найди меня в соцсетях или по почте [email protected]. Здесь я бываю редко и не всегда смогу ответить быстро.
- 1
-
56 минут назад, Pavel3333 сказал:@MasterModeley а вообще, из этих файлов можно выделить модель или только данные по коллизиям?
Модели бронирования, которые у меня на сайте, как раз выделены из этого файла. Это, по сути, обычная 3D модель с вершинами и поверхностями, в которой вместо цвета и текстур прописаны их физические параметры.
-
35 минут назад, Pavel3333 сказал:@MasterModeley а почему удалили свой репозиторий? был очень полезный материал...
Принцип, который там использовался, был не совсем правильный. После очередного обновления танков всё порушилось.
Как уже писал чуть выше, правильная и полная информация находится в репозитории https://github.com/blueskythlikesclouds/TagTools
- 1
-
Решить проблему "в лоб" оказалось слишком сложно. Пришлось серьёзно заняться гуглением. В результате нашёл кое-что полезное.
Вот здесь https://github.com/blueskythlikesclouds/TagTools отлично расписано, что и как хранится в havok файле.
После небольших исправлений cможет переварить файлы WoT. Тем более, в новой версии WoT формат havok очистился от лишнего.
- 3
-
Из полученных данных я теперь тоже могу собирать такие модели https://i.imgur.com/RuBW8LS.png
Однако это не совсем то, что хотелось получить. Вершины получаются правильные, но объекты - нет.
- 5
-
В 20.02.2018 в 12:13, reven86 сказал:Из того, что видно - модель теперь состоит из отдельных частей, которые могут пересекаться друг с другом
Мне кажется, что эти "части" должны быть замкнутыми (возможно выпуклыми) фигурами , поэтому пересекаются друг с другом. Осталось научиться отделять значимые полигоны от служебных.
-
Обязательно. Как только удастся получить вменяемую модель, сразу же всё расскажу и покажу.
- 1
-
ОК. Разобрал структуру данных.
Приступил к попыткам собрать геометрию.
- 1
-
Колитесь, как вам удалось получить такое https://i.imgur.com/RuBW8LS.png ?
Я погряз в разборе структуры данных.
-
Предполагаю, что можно. Есть некоторые подвижки в изучении этих файлов.
-
Внимательно присмотревшись к блоку TNA1 можно обнаружить его связь с TSTR:
8127 0000 hkRootLevelContainer 0102 hkArray 0203 tT 0304 tAllocator 0400 hkRootLevelContainer::NamedVariant 0500 hkContainerHeapAllocator 0601 0203 T* 0700 int 0800 hkStringPtr 0900 hkRefVariant 0A00 char* 0B00 0601 020A hkReferencedObject 0C00 hkBaseObject 0D00 0000 hkPropertyBag 0E00 char 0F00 hkMemoryResourceContainer 1000 0102 0215 0304 0102 0217 0304 hkResourceContainer 1100 hkResourceBase 1201 hkRefPtr 1319 0601 0215 1201 1310 0601 0217 tTYPE 1400 0601 0219 0601 0210 hkMemoryResourceHandle 1500 0102 021E 0304 hkResourceHandle 1600 0601 021E hkMemoryResourceHandle::ExternalLink 1700 0102 0223 0304 HKBodyFlagsData 1800 hkVector4 1900 0601 0223 HKBodyFlagsData::Info 1A00 hkVector4f 1B00 hkInt64 1C00 unsigned int 1D00 float 1E00 long long и т.д.
-
ОК. Спасибо за файлы.
-
Если в нем и есть hkx файлы, то скорее всего их запихнули в ba2 архивы. Распаковщик https://gamer-mods.ru/load/skyrim_se/instrumentarij/bethesda_archive_extractor/151-1-0-4758
-
2 часа назад, SkepticalFox сказал:https://github.com/Dexesttp/hkxpack/tree/master/core/src/test/resources
Там и структура в доках расписана для той версии
К сожалению, там слишком маленький тестовый файл. И на первый взгляд он не имеет ничего общего с исследуемой версией.
-
Вот до чего я пока докопался в staticModules_default:
- блок TAG0
- блок SDKV : версия SDK в текстовом виде
- блок DATA : данные геометрии и физики (?)
- блок TYPE
- TSTR : строки (в большинстве с префиксом hk* )
- TNA1 : ?
- FSTR : строки (имена параметров?)
- TBDY : ?
- TPAD : ?
- блок INDX
- ITEM : массив индексов { uint32 флаги(?), uint32 позиция в блоке DATA, uint32 количество (не размер!) данных }
Причём, блок TYPE кажется одинаков для всех файлов(?)
Может ли кто-нибудь кинуть в меня "типичный" havok файл, который можно конвертировать hkxcmd и посмотреть, что в итоге должно примерно получиться? Можно бросаться уже конвертированными.
-
Подводем итоги проведённым изысканиям.
Рассмотрим подробно принципы формирования новых текстур на примере шасси Сфинкса. Материал определён в файле "\Objects\vehicles\afv\sphinx\sphinx_hull.mtl" и имеет вот такой вид:
Цитата<Material Name="Wheels" MtlFlags="524416" Shader="AT_LayeredPaint" GenMask="800004000" StringGenMask="%BUMP_MAP%DIFFUSE_EXISTS" SurfaceType="mat_vehicle_armor" MatTemplate="" Diffuse="0.04614884,0.042987008,0.014310519" Specular="1,1,1" Emissive="0,0,0" Shininess="60" Opacity="1" HeatAmountScaled="83" LayerAct="1">
<LayeredConfig>
<File Val="objects/vehicles/afv/sphinx/textures/new/wheels/id.xml"/>
<Layers>
<Item>
<LayerKey Val="BasePaint"/>
<Material Val="materials/at_materials/basepaint_01"/>
<AlbedoAlpha Val="3.4300001"/>
<SurfaceAlpha Val="1.34"/>
.......
<Item>
<LayerKey Val="RubberRaw"/>
<Material Val="materials/at_materials/rubberraw_01"/>
<AlbedoAlpha Val="1.12"/>
<SurfaceAlpha Val="1"/>
......Перебирая "Item" в "Layers" мы можем получим набор цветов, соответствующих "LayerKey". Для этого надо исследовать файл материалов, определённый в "Material". Например, для "RubberRaw" это будет файл "/materials/at_materials/rubberraw_01.mtl":
Цитата<Material MtlFlags="524288" Shader="AT_SingleLayer" GenMask="0" StringGenMask="" SurfaceType="" MatTemplate="" Diffuse="0.020951131,0.020951131,0.020951131" Specular="0.031551391,0.031551391,0.031551391" Emissive="0,0,0" SimplifiedDiffuseScalar="2" Shininess="40" Opacity="1" CloakAmount="0" LayerAct="1">
<Textures />
<PublicParams FresnelContribution="1" SurfaceTilingU="3" NormalRotation="0" SurfaceIndex="2" EmissiveExponent="0" SurfaceRotation="0" NormalsContribution="0" NormalTilingV="3" EmissiveMultiplier="0" CamoWeight="0" SmoothnessContribution="1" FresnelScale="3" FresnelBias="0.2" NormalIndex="2" SurfaceTilingV="3" GlobalAlbedoWeight="0" NormalTilingU="3" DiffuseContribution="0.315" GlobalMaterialScale="4" IndirectColor="0.25,0.25,0.25"/>
</Material>Здесь нас интересует атрибут "Diffuse", мы и будем использовать. В нашем случае это чёрная резина с цветом #050505.
Составив таблицу цветов, займёмся файлом "/objects/vehicles/afv/sphinx/textures/new/wheels/id.xml" в котором описаны материалы и их слои:
Цитата<?xml version="1.0"?>
<Palettes>
<Palette id="1">
<Layer name="Dirt.tga" />
<Layer name="BasePaint.tga" />
<Layer name="Scratch.tga" />
<Layer name="RubberRaw.tga" />
<BaseLayer name="base_00FFFF" />
</Palette>
<Palette id="2">
<Layer name="Dirt.tga" />
<Layer name="BasePaint.tga" />
<Layer name="Scratch.tga" />
<BaseLayer name="base_0000FF" />
</Palette>
<Palette id="3">
<Layer name="Dirt.tga" />
<Layer name="BasePaint.tga" />
<Layer name="Scratch.tga" />
<BaseLayer name="base_FF0000" />
</Palette>
Мы видим три материала из 4-5 слоёв.
По идее, вместо вычисленных выше цветов можно просто использовать текстуры, определённые в этом файле. Но найти их мне не удалось.
"BaseLayer" определяет цвет основы, на которую наносятся остальные слои. Интенсивность первого первого слоя определяется R каналом в файле "/objects/vehicles/afv/sphinx/textures/new/wheels/w.dds", интенсивность второго, третьего и четвёртого слоёв каналами G, B и A соответственно.
Файл "/objects/vehicles/afv/sphinx/textures/new/wheels/id.dds" в красном канале содержит карту применения того или иного материала. В нашем случае пикселы с R == 1 соответствуют материалу с <Palette id="1"> и т.д.
В результате, алгоритм расчёта пикселя тестуры выглядит следующим образом:
1) выбираем пиксель из w.dds и раскладываем на каналы как R, G, B, A
2) выбираем соответствующий пиксель из id.dds и выбираем R канал как M
3) если M == 0 - пиксель не используется
4) выбираем Palette с id == M как P
5) выбираем цвет как СOLOR из таблицы цветов для P[BaseLayer]
6) для каждого слоя P[Layer] выбираем соответствующие цвета из таблицы цветов как cl и смешиваем с СOLOR используя (R, G, B, A): COLOR = blend( COLOR, cl, {R, G, B, A} )
7) закрашиваем пиксель текстуры цветом COLOR
- 2
-
2 часа назад, Andrakann сказал:А это не зоны пробития случаем?
Нет. Это зоны применения того или иного материала/шейдера. Причем "синий" шейдер для колёс это не то же самое, что и "синий" для корпуса или башни.
Но ваша теория очень интересная. Попробую проверить её.
-
10 минут назад, romand сказал:Попробуй в UV 1:1 поставить. У меня так получалось.
Я рендерю у себя на сайте. Там нет такой возможности. Либо неправильно читаю UV из сgf.
Надо будет еще со смешением цветов поэкспериментировать. Пока результат мне не очень нравится.
- 1
Распаковка клиента Armored Warfare
in Armored Warfare
Posted
Удалось ли кому-то получить данные из gamedata.dat? Что-то моих знаний и умений не хватает