Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
vitacite

Как сделать свой рюкзак.

Recommended Posts

Небольшой гайд по изготовлению вещей.

Готовый мод можно взять тут. 

https://steamcommunity.com/sharedfiles/filedetails/?id=2229460584&searchtext=vwe

 

1.  Персонаж в Dayz представлен 2 моделями женской и мужской. Незабинаренные модели можно взять на GitHub 

https://github.com/BohemiaInteractive/DayZ-Misc они нам поднадобятся в дальнейшем для подгонки обмундирования.

2. Дальше будет чуток теории.  Попробую объяснить своими словами, что такое "развесовка". Вообщем анимации надо понимать, насколько сильно деформируется сетка модели (в нашем случае одежды) обмундирования, например при сгибании и разгибании рукавов, -  сгиб руки на уровне локтя деформируется сильно, а вот плечо почти не деформируется.  А еще в модели есть кости - на которые сетка натянута, и которые описываются в файле model.cfg и соотвественно вся наша одежда должна быть к  этим костям привязана.

Развесовку делать долго и сложно, я не буду выпендриваться и говорить, что я в этом мастер. Напротив мне это сложно. Поэтому я пошел по пути наименьшего сопротивления. Если под бронежилет нужно минимум 3 кости (3 кости спины spine1, spine2, spine3 и возможно еще кости шеи neck и развесовку под них. Если этого не сделать при движении бронежилет будет двигаться отдельно от туловища приводя к неприятным визуальным дефектам.

Но есть два предмета для, которых не нужно много костей и развесовка.  Это шлем и рюкзак. 🙂 Первый привязывается к кости head - голова.. второй кости spine2 (шлем это и противогаз, и шапка и кепка и бандана) все будет весеть на кости head.  Под все остальное вам понадобится понимание что такое развесовка и уменее ее делать, а так же начальные навыки анимации. Многачасовой детальный разбор можно найти на канале blackgeneal.

3. Далее все модели должны быть представлены в 3х состояниях. Модели для мужчины, модели для женщины, и модель для держания в руках + лежания вещи  на земле + отображения в инвентаре. Соответственно они будут описаны в config.cfg.

Как обычно я раззорился на CgTrade ради пака с рюкзаками... https://www.cgtrader.com/hussky9 у этого автора вообще много стоящих моделек, и сетка моделей неплохая и материалы под них.

Там уже есть готовые текстуры и материалы для разных форматов идем в папку PBR.

Будем разбирать на примере рюзака Camel - это тот который с поилкой. 

Рабочая папка у нас будет находиться в vwe\backpack\

Camel_AO.png
Camel_Black_Diffuse.png
Camel_Green_Diffuse.png
Camel_Metallic.png
Camel_Multicam_Diffuse.png
Camel_Normal.png
Camel_Roughness.png
Camel_Tan_Diffuse.png
Camel_Woods_Diffuse.png

Все текстуры - шкурки (в нашем варианте их 5 и они все имеют перфикс _Diffuse) сохраняем в папку vwe\backpack\data\  с перфиксом _co в формате .tga и так же (поменяем размер с 4096x4096 на 2048x 2048. Дейз плохо работает с 4к тесктурами о чем разработчики честно предупреждают). 

итогом стало в моем случае...

CamelCamoBlackBP_co.tga
CamelCamoGreenBP_co.tga
CamelCamoMulticamBP_co.tga
CamelCamoTanBP_co.tga
CamelCamoWoodBP_co.tga

Далее нам нужны текстуры _as (амбиент оклюжен) , _nohq и _smdi .

Первую текстуру получаем следующими образом.

Окрываем фотожопом camel_AO.png приводим размер к 2048 на 2048 px.  эта тестура сохранена в RGB. Информация об _AS содержиться только в зеленом канале!!! Все остальные заливаем белым дефолтным цветом.

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Для движка информация в зеленом канале показывает какие участки на модели буду освещены ярче или темнее окружающим светом. А все остальные каналы содержат 0. Так же ambiend occlusion должен обязательно иметь перфикс _as. 

Далее smdi сделаем из двух текстур..

В нашем случае это  Camel_Roughness.png - которая показывает шероховатость поверхности... и  Camel_Metallic.png которая показывает блеск. Обе эти текстуры находятся в формате оттенки серого.. играя яркостью и контрастностью можно задать правильную правильные блеск и отражения повехности... (Как меня поправили ниже "эксперты-экстеты", т.к. SMDI Это металик + глоснесс, а его у нас нет, поэтому пытаемся получить glossness из roughness путем  инверсии последней.  И дальше уже подгоняем под необходимые параметры. ) Собственно развлекайтесь смотрите тестируйте.. я оставил как есть (меня устроило). Итак. .приводим все к размеру 2048 на 2048 создаем пустой файл в формате RGB.. у которого все каналы белые.. Шерховатость, которая стала гладкостью, копируем в синий канал... а блеск в зеленый. Чем светлее пятно в зеленом канале тем оно ярче блестит.

В нашем случае все практически черное.. но при этом с текстурой шероховатости (брезент).

В моем случае вышло так...

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

Все это сохраняем с перфиксом _smdi.. Ну собственно нормаль сохраняем, как нормаль... Далее я взять ванильный материал с Alice bp и чуток его отредактировал.. листинг ниже.. 

 

Скрытый текст

ambient[] = {1,1,1,1};
diffuse[] = {1,1,1,1};
forcedDiffuse[] = {0,0,0,0};
emmisive[] = {0,0,0,1};
specular[] = {0.47292158,0.469,0.469,1};
specularPower = 25.8;
PixelShaderID = "Super";
VertexShaderID = "Super";

class Stage1
{
    texture = "vwe\backpack\Data\CamelBP_nohq.tga";
    uvSource = "tex";
    class uvTransform
    {
        aside[] = {1,0,0};
        up[] = {0,1,0};
        dir[] = {0,0,1};
        pos[] = {0,0,0};
    };
};
class Stage2
{
    texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
    uvSource = "tex";
    class uvTransform
    {
        aside[] = {1,0,0};
        up[] = {0,1,0};
        dir[] = {0,0,1};
        pos[] = {0,0,0};
    };
};
class Stage3
{
    texture = "#(argb,8,8,3)color(0,0,0,0,MC)";
    uvSource = "tex";
    class uvTransform
    {
        aside[] = {1,0,0};
        up[] = {0,1,0};
        dir[] = {0,0,1};
        pos[] = {0,0,0};
    };
};
class Stage4
{
//    texture = "vwe\backpack\Data\CamelBP_as.tga";
    texture = "#(argb,8,8,3)color(1,1,1,1,AS)";
    uvSource = "tex";
    class uvTransform
    {
        aside[] = {1,0,0};
        up[] = {0,1,0};
        dir[] = {0,0,1};
        pos[] = {0,0,0};
    };
};
class Stage5
{
    texture = "vwe\backpack\Data\CamelBP_smdi.tga";
//    texture = "#(argb,8,8,3)color(1,1,1,1,SMDI)";
    uvSource = "tex";
    class uvTransform
    {
        aside[] = {1,0,0};
        up[] = {0,1,0};
        dir[] = {0,0,1};
        pos[] = {0,0,0};
    };
};
class Stage6
{
    texture = "#(ai,64,64,1)fresnel(1.05,0.67)";
    uvSource = "tex";
    class uvTransform
    {
        aside[] = {1,0,0};
        up[] = {0,1,0};
        dir[] = {0,0,1};
        pos[] = {0,0,0};
    };
};
class Stage7
{
    texture = "#(argb,8,8,3)color(0,0,0,1,CO)";
    uvSource = "tex";
    class uvTransform
    {
        aside[] = {1,0,0};
        up[] = {0,1,0};
        dir[] = {0,0,1};
        pos[] = {0,0,0};
    };
};

 

Продолжение следует....

 

 

 

Edited by vitacite (see edit history)

Share this post


Link to post
Share on other sites



Часть вторая..

Материал у нас готов папка имеет следующий вид..

vwe\backpack\data\

CamelBP.rvmat
CamelBP_as.paa
CamelBP_as.tga
CamelBP_nohq.paa
CamelBP_nohq.tga
CamelBP_smdi.paa
CamelBP_smdi.tga
CamelCamoBlackBP_co.paa
CamelCamoBlackBP_co.tga
CamelCamoGreenBP_co.paa
CamelCamoGreenBP_co.tga
CamelCamoMulticamBP_co.paa
CamelCamoMulticamBP_co.tga
CamelCamoTanBP_co.paa
CamelCamoTanBP_co.tga
CamelCamoWoodBP_co.paa
CamelCamoWoodBP_co.tga

Да. Почему .tga.. , а не .paa потому что при включении в Object Builder режима DirectX материал и диффузка в .tga будут отображаться на модели без бульдозра, прямо во время редактирования. Что очень удобно.

При бинарке, все автоматически переконвертируется в *.paa, включая пути в материалах и расширения там,  а *.tga файлы сотрутся. 

Теперь нам надо сделать женский и мужской вариант рюкзака (женщина и мужчина в Dayz разные у женщины тоще жопа и больше голова. Хотя рост у них почти одинаковый.. вот такое вот...

Для начала экспортируем рюкзак из формата .fbx

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

После подцепления текстур  *.tga получится примерно такое.. Однако для примерки нам понадобиться шаблонная фигура т.к. объект должен быть правильно спозиционирован.

Я делаю это так..

Для начала я включаю в настройках object builder отображения первого лода (он нам нужен для позиционирования..) затем визуальный лод копирую как есть в слой 1.000 а модель копирую

(открыли и ctrl +c и ctrl + v в слой 0.000 нашей модели...) получаем ...

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

Как вы видите очень удобное.. перемещая наш рюкзак в пространстве мы подгоним его точно по фигуре нашего персонажа.

Далее удаляем слой 0 (с персонажем), а наш 1.000 переименовываем в 0.000.. 

Теперь нам нужно разобраться с selection..

Т.к. развесовка для рюкзака не принципиальная выделяем через CTRL+A все и сохраняем, создаем аж 4 селекшена...

camomale - по нему будем менять текстуры из конфига на мужике

camofemale - по нему будем менять текстуры из конфига на тетке

zbytek - чисто должен быть 

ну и собственно кость к которой все привязано

spine2 - на скрине очень хорошо видно, selection в зоне действия этой кости это какраз то место где спина плотно соприкасается с рюкзаком.

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

C визуальным лодом все. Делаем его дубликат, и сохраняем как viewpilot (со всеми селешенами) . Два лода есть.. теперь нужны firegeometry, geometry и viewgeomety.. в случае с рюкзаком 

можно не заморачиваться и сделать все три лода путем копирования геометрии. 

Не забываем в геометрии  и только в ней обязательно указать autocenter = 0, дабы рюкзак не висел у нас между ног. А так же привязать к firegeometry - материал ткань... он влияет на сопротивление материала и то, что от него отлетает при повреждении. В моем случае это 

P:\dz\data\data\penetration\fabricp.rvmat  

Cохраняем все для мужика под названием CamelBP_m.p3d и повторяем процедуру с женским персонажем сохраняя соотвественно как, CamelBP_f.p3d

Дальше нам нужна еще одна модель рюкзака, так которая будет отображаться в руках когда держат рюкзак и с которой будут рендериться 3д модели в инвентаре. 

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

На скрине можно увидеть насколько в разных позициях они находятся. Поэтому для позиционирования придется добавить в прокси любую похожую модель рюкзака с перфиксом _g. (например Alice backPack) и запусти булдозер по ней спозиционировать в пространстве.. Так же нам не нужна кость spine селекшены camomale и camofemale - но нужен будет selection camoGround в визуальном лоде и viewpilot. Viewgeometry, Firegeomtery, Geometry можно Ctrl+c - Ctrl+v с предыдущей модели, только не забудьте что их тоже надо позиционировать.

Ну и оконцовке чтобы все это добро отображалось корректно в руках и в инветаре нужен лод мемори.

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

В моем случае он выглядит так (вид сверху). Точка invview находится перед объектом по центру на расстоянии в метр, это то как мы видим объект в меню..

boundingbox_max и min соответственно левая нижняя и правая верхняя точки (габариты предмета для взятия в руки) и cecenter и ceradius вообще в одной точке в центре модели...

Ну собственно с моделированием все. Сохраняем это дело...

продожение следует....

 

 

 

 

 

Edited by vitacite (see edit history)

Share this post


Link to post
Share on other sites

Теперь конфиг...

Создаем базовый класс 

Скрытый текст

    class CamelBP_ColorBase: MountainBag_ColorBase {
        scope=0;
        displayName = "$STR_CamelBP";
        descriptionShort = "$STR_CamelBP";
        model = "\vwe\backpack\CamelBP_g.p3d";
        inventorySlot[] = {"Back"};
        attachments[] = {};
        itemInfo[] = {"Clothing","Back"};
        rotationFlags = 16;
        itemSize[] = {5,7};
        itemsCargoSize[] = {10,8};
        weight = 2300;
        absorbency = 0.2;
        heatIsolation = 0.13;
        repairableWithKits[] = {5,2};
        repairCosts[] = {30.0,25.0};
        soundAttType = "Outdoor";
        randomQuantity = 4;
        hiddenSelections[] = {"camoGround","camoMale","camoFemale"};
        hiddenSelectionsTextures[] = {
            "\vwe\backpack\Data\CamelCamoBlackBP_co.paa",
            "\vwe\backpack\Data\CamelCamoBlackBP_co.paa",
            "\vwe\backpack\Data\CamelCamoBlackBP_co.paa"
        };
        class ClothingTypes
        {
            male = "\vwe\backpack\CamelBP_m.p3d";
            female = "\vwe\backpack\CamelBP_m.p3d";
        };
        class DamageSystem
        {
            class GlobalHealth
            {
                class Health
                {
                    hitpoints = 300;
                    healthLevels[] = {{1.0,{}},{0.7,{}},{0.5,{}},{0.3,{}},{0.0,{}}};
                };
            };
        };
    };
 

Этот клас не виден, но он содержит все базовые параметры которые одинаковые у всех рюкзаков.. обратите внимание, что в кофиге указываются все селекшены и все модели. Т.к. для рюкзака мужик/баба разницы нет (они же одинакового роста), то и заморачиваться я не стал.. поэтому 

 

            male = "\vwe\backpack\CamelBP_m.p3d";
            female = "\vwe\backpack\CamelBP_m.p3d";

в самом верху прописывается то что лежит в инвентаре и на земле.

           model = "\vwe\backpack\CamelBP_g.p3d";

камо прописывается ниже 

        hiddenSelections[] = {"camoGround","camoMale","camoFemale"};
        hiddenSelectionsTextures[] = {
            "\vwe\backpack\Data\CamelCamoBlackBP_co.paa",
            "\vwe\backpack\Data\CamelCamoBlackBP_co.paa",
            "\vwe\backpack\Data\CamelCamoBlackBP_co.paa"

Теперь при наследовании можно к нему обращаться и менять текстуры из конфига используя базовую модель и базовые настройки.

Это будет выглядеть примерно так..

 

 class CamelBP_Sand: CamelBP_ColorBase {
        scope=2;
        displayName = "$STR_CamelBP_Sand";
        descriptionShort = "$STR_CamelBP_Sand";
        hiddenSelections[] = {"camoGround","camoMale","camoFemale"};
        hiddenSelectionsTextures[] = {
            "\vwe\backpack\Data\CamelCamoTanBP_co.paa",
            "\vwe\backpack\Data\CamelCamoTanBP_co.paa",
            "\vwe\backpack\Data\CamelCamoTanBP_co.paa"
        };
    };


Ну и наконце модель cfg. верхняя часть для ВСЕХ с костями персонажа ОДИНАКОВАЯ... Разница только внизу где находится описание наших классов. Классы должны называться точно также, как ваша модель и содержать selection который есть у вас в модели..

см. листинг

 

class cfgSkeletons
{
	class DayzTemporarySkeleton
	{
		skeletonInherit = "";
		isDiscrete = 0;
		SkeletonBones[]=
		{
			"pelvis"	,"",
			"launcher"	,"pelvis",
			"weapon"	,"pelvis",
			"propweaponbody"	,"weapon",
			"propweaponslide"	,"propweaponbody",
			"propweaponmag"	,"propweaponbody",
			"propweapon01"	,"propweaponbody",
			"propweapon02"	,"propweaponbody",
			"propweapon03"	,"propweaponbody",
			"propweapon04"	,"propweaponbody",
			"propweapon05"	,"propweaponbody",
			"propweapon06"	,"propweaponbody",
			"propweapon07"	,"propweaponbody",
			"propweapon08"	,"propweaponbody",
			"propweapon09"	,"propweaponbody",
			"propweapon10"	,"propweaponbody",
			"lefthipextra"	,"pelvis",
			"righthipextra"	,"pelvis",
			"propbeltleft"	,"pelvis",
			"propbeltright"	,"pelvis",
			"propbeltcenter"	,"pelvis",
			"turningaxis"	,"pelvis",
			"propbackpackmain"	,"pelvis",
			"propbackpacktop"	,"propbackpackmain",
			"propbackpackextra"	,"propbackpackmain",
			"propbackpackleft"	,"propbackpackmain",
			"propbackpackright"	,"propbackpackmain",
			"spine"	,"pelvis",
			"spine1"	,"spine",
			"proprifleunderarm"	,"spine1",
			"spine2"	,"spine1",
			"proprifleback"	,"spine2",
			"propvestleft"	,"spine2",
			"propvestright"	,"spine2",
			"propvestfront"	,"spine2",
			"propvestlower"	,"propvestfront",
			"spine3"	,"spine2",
			"propvestupper"	,"spine3",
			"propvestback"	,"spine3",
			"neck"	,"spine3",
			"neck1"	,"neck",
			"head"	,"neck1",
			"prophelmet"	,"head",
			"prophelmetvisor"	,"prophelmet",
			"propmouth"	,"head",
			"propmask"	,"head",
			"propglasses"	,"head",
			"prophelmetchin"	,"head",
			"propcamera1st"	,"head",
			"headcutscene"	,"head",
			"eyeleft"	,"head",
			"eyeright"	,"head",
			"face_browfrontleft"	,"head",
			"face_browfrontright"	,"head",
			"face_browmiddle"	,"head",
			"face_browsideleft"	,"head",
			"face_browsideright"	,"head",
			"face_cornerleft"	,"head",
			"face_cornerright"	,"head",
			"face_eyelidlowerleft"	,"head",
			"face_eyelidlowerright"	,"head",
			"face_eyelids"	,"head",
			"face_eyelidupperleft"	,"head",
			"face_eyelidupperright"	,"head",
			"face_forehead"	,"head",
			"face_cheekfrontleft"	,"head",
			"face_cheekfrontright"	,"head",
			"face_cheeksideleft"	,"head",
			"face_cheeksideright"	,"head",
			"face_cheekupperleft"	,"head",
			"face_cheekupperright"	,"head",
			"face_chin"	,"head",
			"face_chopleft"	,"head",
			"face_chopright"	,"head",
			"face_jawbone"	,"head",
			"face_jowl"	,"head",
			"face_liplowerleft"	,"head",
			"face_liplowermiddle"	,"head",
			"face_liplowerright"	,"head",
			"face_lipupperleft"	,"head",
			"face_lipuppermiddle"	,"head",
			"face_lipupperright"	,"head",
			"face_nostrilleft"	,"head",
			"face_nostrilright"	,"head",
			"face_tongue"	,"head",
			"beard"	,"head",
			"hair"	,"head",
			"leftshoulder"	,"spine3",
			"leftarm"	,"leftshoulder",
			"leftarmextra"	,"leftarm",
			"leftarmroll"	,"leftarm",
			"leftelbowextra"	,"leftarmroll",
			"leftforearm"	,"leftarmroll",
			"leftforearmextra"	,"leftforearm",
			"leftforearmroll"	,"leftforearm",
			"leftwristextra"	,"leftforearmroll",
			"lefthand"	,"leftforearmroll",
			"prophandl"	,"lefthand",
			"lefthandring"	,"lefthand",
			"lefthandring1"	,"lefthandring",
			"lefthandring2"	,"lefthandring1",
			"lefthandring3"	,"lefthandring2",
			"lefthandpinky1"	,"lefthandring",
			"lefthandpinky2"	,"lefthandpinky1",
			"lefthandpinky3"	,"lefthandpinky2",
			"lefthandmiddle1"	,"lefthand",
			"lefthandmiddle2"	,"lefthandmiddle1",
			"lefthandmiddle3"	,"lefthandmiddle2",
			"lefthandindex1"	,"lefthand",
			"lefthandindex2"	,"lefthandindex1",
			"lefthandindex3"	,"lefthandindex2",
			"lefthandthumb1"	,"lefthand",
			"lefthandthumb2"	,"lefthandthumb1",
			"lefthandthumb3"	,"lefthandthumb2",
			"rightshoulder"	,"spine3",
			"rightarm"	,"rightshoulder",
			"rightarmextra"	,"rightarm",
			"rightarmroll"	,"rightarm",
			"rightelbowextra"	,"rightarmroll",
			"rightforearm"	,"rightarmroll",
			"rightforearmextra"	,"rightforearm",
			"rightforearmroll"	,"rightforearm",
			"rightwristextra"	,"rightforearmroll",
			"righthand"	,"rightforearmroll",
			"prophandr"	,"righthand",
			"righthandring"	,"righthand",
			"righthandring1"	,"righthandring",
			"righthandring2"	,"righthandring1",
			"righthandring3"	,"righthandring2",
			"righthandpinky1"	,"righthandring",
			"righthandpinky2"	,"righthandpinky1",
			"righthandpinky3"	,"righthandpinky2",
			"righthandmiddle1"	,"righthand",
			"righthandmiddle2"	,"righthandmiddle1",
			"righthandmiddle3"	,"righthandmiddle2",
			"righthandindex1"	,"righthand",
			"righthandindex2"	,"righthandindex1",
			"righthandindex3"	,"righthandindex2",
			"righthandthumb1"	,"righthand",
			"righthandthumb2"	,"righthandthumb1",
			"righthandthumb3"	,"righthandthumb2",
			"leftupleg"	,"pelvis",
			"leftuplegroll"	,"leftupleg",
			"propthighleft"	,"leftupleg",
			"leftkneeextra"	,"propthighleft",
			"leftleg"	,"propthighleft",
			"leftlegroll"	,"leftleg",
			"leftfoot"	,"leftlegroll",
			"lefttoebase"	,"leftfoot",
			"rightupleg"	,"pelvis",
			"rightuplegroll"	,"rightupleg",
			"propthighright"	,"rightupleg",
			"rightkneeextra"	,"propthighright",
			"rightleg"	,"propthighright",
			"rightlegroll"	,"rightleg",
			"rightfoot"	,"rightlegroll",
			"righttoebase"	,"rightfoot",
			"camera"	,"",
			"righthand_dummy"	,""
		};
	};
};
class CfgModels
{
	class Default
	{
		sections[] = {};
		sectionsInherit="";
		skeletonName = "";
	};

	class TacWeaponBackPack_m: Default
	{
		skeletonName="DayzTemporarySkeleton";
		sections[]=
		{
			"camomale",
			"zbytek",
			"camofemale"
		};
	};
	class TacWeaponBackBag_m: TacWeaponBackPack_m {};

	class TacWeaponBackPack_g: Default
	{
		sections[]=
		{
			"camoground",
			"zbytek"
		};
	};//</Modelclass>

	class MilitaryExpBP_m: Default
	{
		skeletonName="DayzTemporarySkeleton";
		sections[]=
		{
			"camomale",
			"zbytek",
			"camofemale"
		};
	};
	class MilitaryExpBP_f: MilitaryExpBP_m {};
	class MilitaryExpBP_g: Default
	{
		sections[]=
		{
			"camoground",
			"zbytek"
		};
	};//</Modelclass>

	class CamelBP_m: Default
	{
		skeletonName="DayzTemporarySkeleton";
		sections[]=
		{
			"camomale",
			"zbytek",
			"camofemale"
		};
	};
	class CamelBP_f: CamelBP_m {};

	class CamelBP_g: Default
	{
		sections[]=
		{
			"camoground",
			"zbytek"
		};
	};//</Modelclass>
};//</CfgModels>

Файл должен в обязательном порядке называться model.cfg и лежать в той же папке что и модель. При забинарке он вшьется внутрь модели. И будет доступн только для просмотра через утилиту elitness из пакета микеро.

 

 

PS: Мод с рюкзаками содержит в себе 

тактические рюкзаки, (здоровенные такие),  тактическую сумку на их базе для снайперских комплексов и треног (каждый в трех вариантах), рюкзак camel аж в пяти вариантах, и тактичесий экспедиционный рюкзак в 3х вариантах. Для бесплатного использования. Перепродажа запрещена. Копирование в свой мод - запрещено. Может использоваться сколько угодно, в том виде в котором представлены. Автор не несет ответственности и не примает притензий. Обновления планируются позже, когда не будет лень. Сейчас лень.

Ну собственно все. Всем добра.

 

 

 

 

 

Edited by vitacite (see edit history)

Share this post


Link to post
Share on other sites

Да совсем забыл.. описание некоторых параметров в конфиге

 

        inventorySlot[] = {"Back"}; какие слоты вещей занимает
        attachments[] = {};  перечисляются через запятую прокси которые можно привешать..
        itemInfo[] = {"Clothing","Back"}; тип вещей 

        itemSize[] = {5,7}; сколько слотов занимает в инвентаре
        itemsCargoSize[] = {10,8}; размер в слотах.

Если вы захотите сделать шлем... все будет абсолютно точно также только учитывайте что кость там не spine2 а head, а голова у баб больше ;))
 

Share this post


Link to post
Share on other sites

Пример содержит незабинаренные *_m.p3d рюкзака camel, материалы и конфиги... текстур нет :)) 

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Share this post


Link to post
Share on other sites

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Для тех, кто не знает, где включить изображение фонового лода. Это всегда будет визуальный лод за номером 0.000 и соответственно в 0.001 мы увидим сетку из 0.000 подкрашеное яркожелтым, и наложенный поверх текущий LOD. 0.001.  На скрине мои текущие настройки билдера. Оранжевый (вырвиглаз цвет) в фоне, нужен мне для изготовления геометрии и подгонки. Т.к. под ним хорошо видно яркожелтый фоновый лод (у него нельзя сменить цвет), синим окно подрашивается если влючен directX. 

 

Нахрена заморачиваться с Ambient Occlusion (тестура _as) и материалами можно посмотреть тут..

 

 

Edited by vitacite (see edit history)

Share this post


Link to post
Share on other sites
15.09.2020 в 14:03, vitacite сказал:

В нашем случае это  Camel_Roughness.png - которая показывает шероховатость поверхности... и  Camel_Metallic.png которая показывает блеск. Обе эти текстуры находятся в формате оттенки серого.. играя яркостью и контрастностью можно задать правильную шероховатость и блеск элементов нашей модели... Собственно развлекайтесь смотрите тестируйте.. я оставил как есть (меня устроило), но я знаю эстетов...

 

Один из упомянутых эстетов) имеет честь напомнить автору что он, автор, забыл про один очень важный нюанс.

Карты Roughness и Glossines, это не одно и то же.

 

Как было упомянуто выше автором карта Roughness описывает шероховатость поверхности.

А карта Glossines описывает на сколько зеркальна поверхность.

 

И в этом есть разница, и даже очень.

Белый цвет в Roughness будет говорить что данный участок поверхности, скажем так, наждачная бумага, то есть поверхность и близко не гладкая.

Белый цвет в Glossines будет говорить что данный участок гладкий абсолютно.

 

Формат текстуры отражения для реал виртуалити выглядит так

Specular + Glossines

 

Самый модный ныне формат для худо бедно современных движков это PBR, интересующиеся гуглят сами, если по русски, физически корректный рендеринг.

Карты отражений под этот формат идут в таком тандеме

Metallic + Roughness

 

В результате мы имеем, подавляющее число модельного контента, годного, идёт с текстурным контентом под формат PBR.

Что бы сунуть это добро в реал виртуалити, нужно в синий канал, как и указал автор сунуть карту Metallic, и можно этим ограничиться, но как и указал автор, эстетам этого мало, и они, эстеты, тянут свои шаловливые ручки по корректировать эту карту.

Далее, карту Glossines, при её отсутствии, делаем из карты Roughness, путём банальной инверсии цветов, кто не понял, белое делаем чёрным, чёрное делаем белым. С этой картой после инверсии настоятельно желательно поработать, для более адекватного эффекта, но это опять, к эстетам).

 

 

Edited by SteelRat (see edit history)

Share this post


Link to post
Share on other sites
15.09.2020 в 14:39, vitacite сказал:

Да. Почему .tga.. , а не .paa потому что при включении в Object Builder режима DirectX материал и диффузка в .tga будут отображаться на модели без бульдозра, прямо во время редактирования.

 

только дифузная текстура, материал не будет иметь эффекта

Share this post


Link to post
Share on other sites
15.09.2020 в 14:39, vitacite сказал:

boundingbox_max и min соответственно левая нижняя и правая верхняя точки (габариты предмета для взятия в руки)

 

к рукам не имеет ни какого отношения, эти две точки ограничивающие габариты объекта нужны алгоритмам графического интерфейса что бы корректно вписать объект в ячейки окна инвентаря.

Share this post


Link to post
Share on other sites
15.09.2020 в 14:39, vitacite сказал:

и cecenter и ceradius вообще в одной точке в центре модели...

 

если имеете желание лицезреть в интерфейсе на объект с другого ракурса, нужно по развлекаться с позицией для точки ceradius

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.