Jump to content


Photo

Разбираемся с материалами (*.Rvmat)


  • Please log in to reply
28 replies to this topic

#1 OFFLINE   vitacite

vitacite

    Ефрейтор

  • Пользователи
  • 98 posts
  • Откуда:Novosibirsk

Posted 21 March 2017 - 11:15

Прежде чем разбираться с материалами необходимо понять вообще что в них описывается и о чем идет речь. Лично для меня они в свое время были непонятны, поэтому начну разбираться с азов и рассказывать вам.

 

Начнем с понятия Shader. В файле Rvmat описывается два типа Shader-ов:

Pixel shaders: - пиксельные шедеры  и  Vertex shaders: вертексные шедеры - попробую объяснить что это за звери и с чем их едят :)

Пиксельные шейдеры - это программы, выполняемые видеочипом во время растеризации 
для каждого пикселя изображения, они производят выборку из текстур и/или математические
операции над цветом и значением глубины (Z-buffer) пикселей. Все инструкции пиксельного 
шейдера выполняются попиксельно, после того, как операции с трансформированием и 
освещением геометрии завершены. Пиксельный шейдер в итоге своей работы выдает 
конечное значение цвета пикселя и Z-значение для последующего этапа графического 
конвейера, блендинга. Наиболее простой пример пиксельного шейдера, который можно 
привести: банальное мультитекстурирование, просто смешение двух текстур 
(diffuse и lightmap, например) и наложение результата вычисления на пиксель.
Вертексные шейдеры: Вершинные шейдеры - это программы, выполняемые видеочипами, которые 
производят математические операции с вершинами (vertex, из них состоят 3D объекты в играх), 
иначе говоря, они предоставляют возможность выполнять программируемые алгоритмы по 
изменению параметров вершин и их освещению (T&L - Transform & Lighting). Каждая вершина 
определяется несколькими переменными, например, положение вершины в 3D пространстве определяется 
координатами: x, y и z. Вершины также могут быть описаны характеристиками цвета, 
текстурными координатами и т.п. Вершинные шейдеры, в зависимости от алгоритмов, 
изменяют эти данные в процессе своей работы, например, вычисляя и записывая новые 
координаты и/или цвет. То есть, входные данные вершинного шейдера - данные об одной 
вершине геометрической модели, которая в данный момент обрабатывается. Обычно это 
координаты в пространстве, нормаль, компоненты цвета и текстурные координаты. 
Результирующие данные выполняемой программы служат входными для дальнейшей части конвейера, 
растеризатор делает линейную интерполяцию входных данных для поверхности треугольника 
и для каждого пикселя исполняет соответствующий пиксельный шейдер. Очень простой и 
грубый (но наглядный, надеюсь) пример: вершинный шейдер позволяет взять 3D объект 
сферы и вершинным шейдером сделать из него зеленый куб :).

Примеры где можно применять такие шейдеры:
Скининг (skinning). Matrix pallete skinning для скелетной анимации персонажей с 
большим количеством "костей.
Деформация объектов. Как самый явный и эффектный пример - создание реалистичных волн в динамике.
Анимация объектов. Например, травы и деревьев в одном из первых применений.
Toon shading/Cel shading. Используется в некоторых играх для создания специального эффекта 
"мультяшного" изображения.
Имитация ткани (Cloth Simulation) - для имитации поведения подобных ткани материалов. 

Если резюмировать вышесказанное пиксельные шейдеры в большей степени отвечают за текстуру модели, а вертексные то, как будет выглядеть анимация и деформация модели, теней и тд.

 

Арма 3 предлагает возможность использовать в материалах следующие шейдеры:

 

Пиксельные:

Attached File  sheder1.png   38.31KB   48 downloads

Вертексные:

Attached File  sheder2.png   28.62KB   27 downloads

 

Каждый конкретный тип материала использует фиксированную комбинацию вершинного и пиксельного шейдеров с фиксированными номерами стадий и типом текстуры. Знания об этом можно получить только опытным путем, поэтому самая правильная рекомендации пользоваться темплейтами либо изучать .rvmat материалы на примерах доступных моделей BIS.

 

В файле rvmat шейдеры определяются в разделах

PixelShaderID = ".....";
VertexShaderID = ".....";

Каждый из шейдеров использует специфический класс-этап Stage 

class StageX

Каждый из "этапов" определяет параметры для расчета шейдера, обычно в виде ссылок на битовые карты эффектов.

texture = ...; 
// (имя и путь к эффекту bitmap текстуры).
Filter = “Anisotropic”;
//по умолчанию используется анизотропный фильтр (Anisotropic), но он может быть также Point,Linear,Trilinear
uvSource = “tex”; 
// данный параметр может быть - none, tex, tex1 (second UV set)
class uvTransform; 
// данный параметр определяет Смещение, деформацию или повторение текстуры в 
// заданном UV-наборе.

  • 3

#2 OFFLINE   vitacite

vitacite

    Ефрейтор

  • Пользователи
  • 98 posts
  • Откуда:Novosibirsk

Posted 21 March 2017 - 11:45

Теория материалов. Попробуем разобраться, какими свойствами еще обладает материал. 

Основной 3д сцены помимо модели является сочетание света и теней. Поэтому 3D художник должен разбираться, как работает затенение на модели, чтобы создавать реалистичные 3D сцены.

Lighting

Движок Арма3 расcчитывает освещение по формуле: T * (D.o + A) + S.o где:

T = цвет текстуры 
D = (diffuse lighting) диффузное освещение (цвет, интенсивность и направление. 
Движок арма3 имел до настоящего времени только один источник направленного света 
- солнце или луну). 

D рассчитывается как max (L.N, 0) * sunLightColor - где:
        L - направление света, 
        N - направление поверхности (нормальное) sunLightColor источник солнечного света.

A = (ambient lighting) Окружающее освещение (цвет и интенсивность, всегда присутствует 
с одинаковой интенсивностью во всей сцене, а его значение определяется настройкой 
пасмурного освещения)

S = (specular) - установка глянца и зеркальности для материала)

o = (direction) - Направление света (1 = пиксель горит, 0 = пиксель в тени)

Простые материалы, рассчитывают освещение на вершину путем интерполяции направления света между краями поверхности (нормалями).

Этот расчет похож на модель затенения Горауда, которая выглядит примерно следующим образом.

Attached File  D3D_Shading_Modes.png   5.57KB   9 downloads

 

Более сложные материалы используют нормальную ориентацию на пиксель. В этом случае значения для вычислений затенения комбинируются с текстурами, растровыми изображениями эффектов, настройками освещения движка (config) и настройками материала (* .rvmat).

 

Shadows

Расчет теней в движке Арма3 зависит от двух параметров исходя из параметров настройки видеокарты на клиенте, и исходя из индивидуальных настроек модели.

"Трафаретные тени" четкие и добавляются уже после того, как вся сцена нарисована, движок просто вычисляет объем рассеянного света в тех местах где теней больше. Это приводит к досадным эффектам, когда отражение продолжает присутствовать в затененных местах. Так же следует учитывать, что в том случае если диффузное освещение не обнулено (ForceDiffuse! = 0), результат так же будет не корректным.

 

Glossines 

Зеркальное отражение материала определяется кривой (функция двунаправленного отражения), которая говорит, сколько света отражается под всеми углами. В движке ArmA используются значения SPECULAR POWER или IRRADIANCE TABLE в файлах * rvmat.

Attached File  BRDF.png   29.05KB   10 downloads

 

Sections
Разделы.
Текстуры и материалы связаны с каждой гранью отдельно, поэтому художник может иметь различные материалы на поверхности, отображаемой с одной текстурой. Такая конфигурация принята чтобы снизить нагрузку по обмену между GPU и CPU, при отрисовке новой сцены.

 

Ниже пример простого RVMAT  в котором разобраны описываемые выше параметры.

ambient[]={0.5411765,0.5411765,0.5411765,1};
/*Умножает значения цвета (цветная текстура R, G, B, A) на поверхности, 
которая не освещена основным направленным светом. RGB (красный,синий,зеленый,альфа-канал)*/
diffuse[]={0.5411765,0.5411765,0.5411765,1};
/*Умножает значения цвета поверхности, которая освещена основным направленным светом.
RGB (красный,синий,зеленый,альфа-канал)*/
forcedDiffuse[]={0,0,0,0};
/*Параметр так же называют Translucency. Он помогает имитировать так называемую полупрозрачность. 
Часть диффузного освещения, которое отражается на поверхности в тени. 
Он работает аналогично ambient, но с различным компонентом освещения. 
К сожалению, некоторые шейдеры не работают хорошо с forcedDiffuse.*/

/* Для поверхностей листвы есть специальные шейдеры, которые также используют 
значение ForceDiffuse Alpha для вычисления количества света (1 = все)
Комбинация из трех параметров 
Ambient[] = { 1, 1, 1, 1 };
Diffuse[] = { 0.5, 0.5, 0.5, 1 };  
ForcedDiffuse[] = { 0.5, 0.5, 0.5, 0 };
дает тот же результат, что и свойство старой вершины Half Lighted  
(поверхность освещена одинаково со всех сторон, так, что она кажется плоской)
*/

emmisive[]={0,0,0,1}; 
/* Luminescence Также называется Люминесценция. Значения дают количество света, 
которое светит сама по себе. Используйте его для источников света. */

specular[]={0.070588239,0.070588239,0.070588239,1};
/* Это часть света, которая отражается от поверхности.
Specular вычисляется за вершину или за пиксель в зависимости от конкретного шейдера.*/
specularPower=18; // сила отражения.

Attached File  RVMAT_MaterialSettings.jpg   85.72KB   16 downloads

 

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

pixel RGB on screen =
((RVMAT ambient * RGB texture * Environment ambient)
+ (RVMAT diffuse * RGB texture * Environment diffuse * light direction)
+ (RVMAT forced diffuse * RGB texture * Environment diffuse)
+ RVMAT emissive material * RGB texture
+ (RVMAT specular * Environment diffuse * light direction)

Значения цвета обычно находятся в диапазоне 0-1, но могут быть и больше. Движок ArmA вычисляет свет в высоком динамическом диапазоне, со значениями, превышающими 0-255 RGB. Конечный RGB в мониторе рассчитывается для каждого кадра в зависимости от глаз / оптики. Настройки диафрагмы (затвора) 1.

Реалистичные поверхности не отражают 100% входящего света. Чем больше света отражается, тем меньше он рассеян. Сумма рассеянного, вынужденного рассеянного и отраженного света не должна превышать 1, но это не относится к материалам ArmA реального времени, которые отображают только горячую точку солнечного света и пропускают свет окружающей среды - они выглядели бы слишком темными.

Диффузия для многих обычных поверхностей составляет от 40% до 80%. Если вы нацелены на максимально реалистичные настройки поверхности, изучите справочную информацию. Настройки RVMAT позволяют вам размещать как можно больше цветового диапазона в текстуре, а затем изменять его до реалистичных значений с максимальным динамическим диапазоном.

Реалистичные поверхности, как правило, отражают направленный и рассеянный свет одинаково - Диффуз и Эмбиент равны. У движка ArmA есть настройки среды со значениями диффузного и окружающего (контраст сцены), основанные на записи света реального мира. Не разумно компенсировать контраст в настройках материала.

Более низкие диффузные значения используются для губчатых материалов (некоторый свет передается forceDiffuse). Более низкие значения окружения могут использоваться на поверхностях, где глобальная окружающая среда должна быть уменьшена, например, Интерьеры. Обычно это делается с использованием карт Ambient Light.


Edited by vitacite, 21 March 2017 - 13:59.

  • 3

#3 OFFLINE   vitacite

vitacite

    Ефрейтор

  • Пользователи
  • 98 posts
  • Откуда:Novosibirsk

Posted 21 March 2017 - 12:46

Файлы RVMAT также используются в геометрических LOD для определения физических свойств (идея заключается в том, чтобы иметь возможность использовать один набор физических определений материалов на многих различных поверхностях, которые могут по-прежнему иметь другое визуальное представление). Это делается с помощью ссылки на файл * .bisurf и выглядит примерно так...

surfaceInfo = "data\wood.bisurf";

Так же файл *.bisurf содержит звуковое оформление для поверхностей параметр soundEnviron

"metal_plate"
"hitMan"
"Building"
"Plastic"
"Concrete"
"Default"
"Foliage"
"Glass"
"glass_armored"
"hard_ground"
"soft_ground"
"Metal"
"Rubber"
"Water"
"Wood"

Пример файла *.bisurf

rough = 0.1;// Грубость поверхности
dust = 0.1; // Пыльность
bulletPenetrability = 150; /* Параметр пенетрации для пуль.. Описывает расстояние в мм, которое 
пуля летящая со скоростью 1000 м/с продвигается до полной остановки в предмете. 
Замедление рассчитывается линейно.*/
soundEnviron = Empty; //звуковой эффект для материла отсутствует
isWater = false; //Это водная поверхность true/false.
thickness = 10 // толщина (в Арма не применяется)
density = 2500 // давление в kg/m3, фактически не оказывает никакого влияния на движок Arma
 

Пример файл bisurf для железной пластины.

density=7500
rough=0.01;
dust=0;
bulletPenetrability=150;
soundEnviron="Metal";
isWater=false;

Edited by vitacite, 21 March 2017 - 14:38.

  • 2

#4 OFFLINE   vitacite

vitacite

    Ефрейтор

  • Пользователи
  • 98 posts
  • Откуда:Novosibirsk

Posted 21 March 2017 - 13:08

Темплейты для основных материалов.

 

Авиационный металл. 

Ambient[]={1,1,1,1};
Diffuse[]={1,1,1,1};
ForcedDiffuse[]={0,0,0,0}; 
emmisive[]={0,0,0,0}; 
specular[]=0.15

specularPower=90

fresnel(1.36,0)
texture="a3\data_f\env_land_ca.paa";

Металл для танков

Ambient[]={1,1,1,1};
Diffuse[]={1,1,1,1};
ForcedDiffuse[]={0,0,0,0}; 
emmisive[]={0,0,0,0}; 
specular[]=0.14;
specularPower=70;
fresnel(0.45,0.35)
texture="a3\data_f\env_land_ca.paa";

Автометалл

Ambient[]={1,1,1,1};
Diffuse[]={1,1,1,1};
ForcedDiffuse[]={0,0,0,0}; 
emmisive[]={0,0,0,0}; 
specular[]=0.05;
specularPower=30;

fresnel(7.53,5.44)
texture="a3\data_f\env_land_ca.paa";

Оружейный металл

Ambient[]={1};
Diffuse[]={1};
ForcedDiffuse[]={0}; 
emmisive[]={0}; 
specular[]={0.16};

specularPower=100;
fresnel(4.01,2.86)
texture="a3\data_f\env_land_ca.paa";

Металл литье 

Ambient[]={1,1,1,1};
Diffuse[]={1,1,1,1};
ForcedDiffuse[]={0,0,0,0}; 
emmisive[]={0,0,0,0}; 
specular[]=0.14};
specularPower=30;
fresnel(0.45,0.35)
texture="a3\data_f\env_land_ca.paa";

Пластик

Ambient[]={1,1,1,1};
Diffuse[]={1,1,1,1};
ForcedDiffuse[]={0,0,0,0}; 
emmisive[]={0,0,0,0}; 
specular[]=0.05;
specularPower=40
fresnel(0.75,0.8)
texture="a3\data_f\env_land_ca.paa";

Дерево

Ambient[]={1,1,1,1};
Diffuse[]={1,1,1,1};
ForcedDiffuse[]={0,0,0,0}; 
emmisive[]={0,0,0,0}; 
specular[]=0.01;
specularPower=60;
fresnel(0.45,0.35)
texture="a3\data_f\env_land_ca.paa";

Резина

Ambient[]={1,1,1,1};
Diffuse[]={1,1,1,1};
ForcedDiffuse[]={0,0,0,0}; 
emmisive[]={0,0,0,0}; 
specular[]=0.05;
specularPower=8;
fresnel(3.48,0.03)
texture="a3\data_f\env_land_ca.paa";

Стекло

Ambient[]={1,1,1,1};
Diffuse[]={1,1,1,1};
ForcedDiffuse[]={0,0,0,0}; 
emmisive[]={0,0,0,0}; 
specular[]=1;
specularPower=1000;
fresnelGlass(2.1)
nebo fresnel(0.81,2.2)
texture="a3\data_f\env_land_ca.paa";

Старая автомобильная краска

Ambient[]={1,1,1,1};
Diffuse[]={1,1,1,1};
ForcedDiffuse[]={0,0,0,0}; 
emmisive[]={0,0,0,0}; 
specular[]=0.12};
specularPower=18;
fresnel(0.14,0.17)
texture="a3\data_f\env_land_ca.paa";

Новая автомобильная краска

Ambient[]={1,1,1,1};
Diffuse[]={1,1,1,1};
ForcedDiffuse[]={0,0,0,0}; 
emmisive[]={0,0,0,0}; 
specular[]=0.5;
specularPower=500;
fresnel(0.65,0.06)
texture="a3\data_f\env_land_ca.paa";

Человеческая кожа

Ambient[]={1,1,1,1};
Diffuse[]={0.78};
FDiffuse[]={0.32/0.5}; 
emmisive[]={0,0,0,0}; 
specular[]={0.2)
specularPower=8;
fresnel(2.51,0)
texture="a3\data_f\env_land_ca.paa";

Глаза

Ambient[]={1,1,1,1};
Diffuse[]={0.7};
ForcedDiffuse[]={0.3}; 
emmisive[]={0,0,0,0}; 
specular[]={0.28};
specularPower=850;
fresnelGlass(2.1)
texture="a3\data_f\env_land_ca.paa";

Одежда

Ambient[]={1};
Diffuse[]={1};
ForcedDiffuse[]={0,0,0,0}; 
emmisive[]={0,0,0,0}; 
specular[]={0.03};
specularPower=50;
fresnel(1.32,0.94)
texture="a3\data_f\env_land_ca.paa";

Деревянный оружейный приклад

Ambient[]={1};
Diffuse[]={1};
ForcedDiffuse[]={0}; 
emmisive[]={0}; 
specular[]={0.16};
specularPower=45;
fresnel(1.5,0.45)
texture="a3\data_f\env_land_ca.paa";

  • 3

#5 OFFLINE   vitacite

vitacite

    Ефрейтор

  • Пользователи
  • 98 posts
  • Откуда:Novosibirsk

Posted 21 March 2017 - 13:50

Сложные материалы: (источник мануали BIS для Арма)

Super shader.   Это сложный материал, который содержит все наши стандартные технологии шейдеров (такие как нормальные, зеркальные, эмбиентные, детализированные и т.д.). Кроме того, он присутствует на входной карте Френеля, определяющей каким будет отражение Shader Glass. 

BIS рекомендует использовать его вообще для всех обычных объектов, которые используются в Arma3.  Для для тех объектов которые по какой-то причине не могут использовать Super Shader рекомендуется использовать процедурно-генерированные текстуры.

Материал активируется ссылкой на типы шейдров.

PixelShaderID="Super";
VertexShaderID="Super";

и содержит стадии (этапы) Stage, описываемые ниже. Если мы хотим, чтобы какой-либо этап был проигнорирован, то указываем значения по-умолчанию: (так же приведены в описании).

 

 

Stage 1: Карта нормалей.

Карта использует текстуры нормалей с суффиксами _NO или _NOHQ. Они нужны чтобы симулировать(подделать) освещение для ударов, вмятин, шума низкополигональных поверхностей, придать им реалистичность и объемность. Значения R, G, B для каждого пикселя на карте соответствуют углу X, Y, Z нормали к поверхности в этом пикселе. Значение по-умолчанию:

texture="#(argb,8,8,3)color(0.5,0.5,1,1)";

Stage2:  DetailTexture: Карта деталей (Карта подробностей)

Карты подробностей добавляют к диффузионной карте (собственно основной текстуре модели) внутри одной стадии, другую повторяющуюся текстуру, чтобы достичь большей тонкости для близкого обзора на больших поверхностях, что было бы слишком сложным для покрытия с увеличенным разрешением текстуры. Т.е. детали которые видны вблизи. DetailTexture  используются текстуры с суффиксом _DT 

имеют текстуру, сохраненную внутри альфа-канала (компоненты RGB игнорируются, когда эта текстура преобразуется из TGA в PAA). Из-за особенностей способа позволяющего смешать карту деталей с диффузной картой, необходимо чтобы средний цвет текстуры для карты деталей составлял 50% серого цвета. В противном случае, это может привести к заметному изменению яркости текстуры (MipMapping применяется с расстоянием и углом).

Значение по-умолчанию: 

texture="#(argb,8,8,3)color(0.5,0.5,0.5,0)";

Stage3: Macro map (суффикс текстуры _MC) Макрокарта, Макротекстура..

Макро текстура содержит альтернативные данные для базовой текстуры. Смешивание базовой текстуры и макрокарты для каждой конкретной точки выбирается альфа-каналом макрокарты. (1 означает только макроструктуру, 0 означает только базовую текстуру).

RGB вычисляется как LERP с базовой картой. Детальная карта применяется к концу (последней), поэтому накладывает оригинал и карту макроса.

texture="#(argb,8,8,3)color(0,0,0,0)";

Stage4: AmbientShadow map:  Карта окружающих теней (суффикс текстуры _AS).

Эмбиентная теневая текстура содержит информацию о том, «сколько окружающего света находится в заданном месте». Белый цвет (1) означает полное окружающее освещение. 0 означает отсутствие.

Фактически, эта (RBG) текстура использует только один канал, в своих интересах, - это канал G (зеленый) - поэтому важно, чтобы  в этом канале информация была правильная. Остальные каналы не имеют значения, и в них можно скопировать содержимое зеленого.

Значение по умолчанию.

texture="#(argb,8,8,3)color(0,1,1,1)";

Stage5: SpecularMap  Зеркальная карта типа _SMDI (суффикс _SM не поддерживается). Карты _SMDI представляют собой оптимизированные по битовой глубине зеркальные карты.

Каждый канал в 24-битной (RGB) SMDI-карте имеет другую функцию.

R - должен быть установлен в 1 для всех пикселей;

G -канал функционирует, как зеркальная карта;

B - канал функционирует, как зеркальная карта мощности; (также известная как карта глянца, где черный означает очень грубую [матовую] поверхность, а белые гладкую [блестящую] поверхность).

 

Stage6: Fresnel function: Так называемая функция Френеля. Функция Френеля вводится как процедурная текстура в следующем виде:

texture = "# (ai, 64,64,1) fresnel (N, K)". 

Где N и K являются входами для уравнения Френеля, которое основывается на их основах и для данного угла может определять, насколько отражает под заданным углом.

N и K являются постоянными для данного материала и известны для отдельных элементов. Следующая таблица включает сводку основных материалов и их настройки. В таблице показаны значения отдельных волномеров, которые можно было найти. Видимый спектр составляет приблизительно 400 мкм-800 мкм.

 

Attached File  fre.png   12.65KB   12 downloads

 

Больше информации можно найти

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

... 

 

Stage7:  Environmental map. Карта окружения. Эта технология позволяет отображать окружающую среду в отражении на той или иной поверхности. Отраженная окружающая среда статична, и только изменяет освещение в соответствии с временем суток. Какая текстура, такая и окружающая среда. В нашем случае она называется Environmental map и отображает проекцию полусферы на плоскость.

 

Пример материала с SuperShader-ом, в собранном виде...

ambient[]={1.000000,1.000000,1.000000,1.000000};
diffuse[]={1.000000,1.000000,1.000000,1.000000};
forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000};
emmisive[]={0.000000,0.000000,0.000000,1.000000};
specular[]={0.700000,0.700000,0.700000,1.000000};
specularPower=180.000000;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
	texture="ca\weapons\data\aimpoint_NOHQ.paa";
	uvSource="tex";
};
class Stage2
{
	texture="#(argb,8,8,3)color(0.5,0.5,0.5,0)";
	uvSource="tex";
};
class Stage3
{
       texture="#(argb,8,8,3)color(0,0,0,0)";
	uvSource="tex";
};
class Stage4
{
	texture="#(argb,8,8,3)color(0,1,1,1)";
	uvSource="tex";
};
class Stage5
{
	texture="ca\weapons\data\aimpoint_SMDI.paa";
	uvSource="tex";
};
class Stage6
{
	texture="#(ai,64,64,1)fresnel(1.3,7)";
	uvSource="none";
};
class Stage7
{
	texture="ca\air\data\env_co.paa";
	uvSource="none";
};

Edited by vitacite, 21 March 2017 - 14:04.

  • 3

#6 OFFLINE   vitacite

vitacite

    Ефрейтор

  • Пользователи
  • 98 posts
  • Откуда:Novosibirsk

Posted 27 March 2017 - 15:18

 

Обратите внимание, что в шаблонах для материалов, BIS не удосужился расписать, к какой части материала относятся, какие параметры... поэтому я решил добавить комментарий от себя:

fresnelGlass относится к Stage 6 например:

class Stage6
{
    texture="#(ai,64,64,1)fresnel(1.3,7)";
    uvSource="none";
};

а параметр texture="a3\data_f\env_land_ca.paa"; относится к  class Stage7

например: 

class Stage7 {
    texture="a3\data_f\env_land_ca.paa";
    uvSource="none";
};

Edited by vitacite, 27 March 2017 - 15:18.

  • 2

#7 OFFLINE   Airmaster911

Airmaster911

    Рядовой

  • Пользователи
  • 11 posts
  • Откуда:Ukraine

Posted 03 August 2017 - 00:32

 

Файлы RVMAT также используются в геометрических LOD для определения физических свойств (идея заключается в том, чтобы иметь возможность использовать один набор физических определений материалов на многих различных поверхностях, которые могут по-прежнему иметь другое визуальное представление). Это делается с помощью ссылки на файл * .bisurf и выглядит примерно так...

surfaceInfo = "data\wood.bisurf";

Во первых привет и большое спасибо за подробный гайд. Он гораздо нагляднее бисовской вики.

У меня возникла проблема с выделенным пунктом .
Взял начинку для bisurf из вашего примера и добавил строку "surfaceInfo =" со своим адресом к файлу в конфиг. 
На выходе в редакторе получаем эту ошибку. 
Может подскажете что делаю не так ?
jKtO6jV.png


  • 0

#8 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 03 August 2017 - 16:19

в вашем файле bisurf не определён параметр impact


  • 0

#9 OFFLINE   Airmaster911

Airmaster911

    Рядовой

  • Пользователи
  • 11 posts
  • Откуда:Ukraine

Posted 03 August 2017 - 16:21

в вашем файле bisurf не определён параметр impact

Не в примере от Бисов, ни в статье нет такого параметра. В этом и проблема.


  • 0

#10 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 03 August 2017 - 16:25

примеры ванильных поверхностей

a3\data_f\Penetration


 

в вашем файле bisurf не определён параметр impact

Не в примере от Бисов, ни в статье нет такого параметра. В этом и проблема.

 

 

Нет примеров от БЕСов? Не может быть)

 

armour.bisurf

Density=8600;
rough=0.1;
dust=0;
bulletPenetrability=15;
soundEnviron=Empty;
isWater=false;
friction=0.7;
restitution=0.3;
impact = hitMetal;
soundHit = Metal;
deflection = 2;

  • 1

#11 OFFLINE   Airmaster911

Airmaster911

    Рядовой

  • Пользователи
  • 11 posts
  • Откуда:Ukraine

Posted 03 August 2017 - 16:33

 


Нет примеров от БЕСов? Не может быть)

 

armour.bisurf

Density=8600;
rough=0.1;
dust=0;
bulletPenetrability=15;
soundEnviron=Empty;
isWater=false;
friction=0.7;
restitution=0.3;
impact = hitMetal;
soundHit = Metal;
deflection = 2;

Спасибо. На вики лежит огрызок с половиной параметров.  Вопрос решен.


Edited by Airmaster911, 03 August 2017 - 16:33.

  • 0

#12 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 03 August 2017 - 16:36

Господа, имейте ввиду такой нюанс, человек выложил здесь, в основном, перевод БЕСовской WIKI, информация с которой далеко не во всех местах корректна. И это не косяк того кто делал этот туториал, это косяки с самой WIKI. Если что то не получается, просто задавайте вопросы.


  • 1

#13 OFFLINE   Airmaster911

Airmaster911

    Рядовой

  • Пользователи
  • 11 posts
  • Откуда:Ukraine

Posted 03 August 2017 - 16:45

Господа, имейте ввиду такой нюанс, человек выложил здесь, в основном, перевод БЕСовской WIKI, информация с которой далеко не во всех местах корректна. И это не косяк того кто делал этот туториал, это косяки с самой WIKI. Если что то не получается, просто задавайте вопросы.

Воистину. Аддоны от Богемии, самые аддонистые. 
Возможно вы мне и в этой ситуации сможете посоветовать  ?
С подключенной или отключенной картой AO на поверхности добавленного объекта вот такая лесенка из затенений. В какую сторону копать ?
Создание или удаление теневого лода никак не влияет.

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


  • 0

#14 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 03 August 2017 - 17:05

А вот с этим реально к автору темы, он из нас двоих художник).

 

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

 

киньте сам файл материала


Edited by SteelRat, 03 August 2017 - 17:13.

  • 0

#15 OFFLINE   Airmaster911

Airmaster911

    Рядовой

  • Пользователи
  • 11 posts
  • Откуда:Ukraine

Posted 03 August 2017 - 17:20

А вот с этим реально к автору темы, он из нас двоих художник).

 

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

 

киньте сам файл материала

Нет, с полигонами все ок. Да и не такая там плотная сетка. 
Не бинареный.

Attached Files


  • 0

#16 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 03 August 2017 - 18:28

вот это

surfaceInfo = "elysium_avtomat\EA.bisurf";

в файле rvmat совсем не в кассу

 

материал описывающий физические свойства поверхности *.bisurf цепляется в самом билдере, так же как и обычный материал, выделяете некий селекшен или набор полигонов и цепляете на них этот материал в лоде Geometry если отсутствует лод FireGeometry, или в лоде FireGeometry если таковой присутствует.


Для подобного типа объектов как шаблон берите этот ванильный материал и подгоняйте под свою модель

a3\data_f\default_super.rvmat

ваш материал не корректно оформлен


  • 0

#17 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 03 August 2017 - 18:37

пардон, я чёт загнал)

 

Короче, ваш материал именно визуальный однозначно не корректный, так что берите ванильный шаблон и переделывайте.

 

А для материала поверхности вам нужны два файла

сам файл bisurf в котором вы определяете физические свойства.

и к этому файлу вы создаёте ещё один файл rvmat

в котором собственно и делаете ссылку на файл bisurf

и уже этот файл rvmat цепляете в на поверхность в лоде геометрии.


Edited by SteelRat, 03 August 2017 - 18:43.

  • 0

#18 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 03 August 2017 - 18:46

armour.bisurf

Density=8600;
rough=0.1;
dust=0;
bulletPenetrability=15;
soundEnviron=Empty;
isWater=false;
friction=0.7;
restitution=0.3;
impact = hitMetal;
soundHit = Metal;
deflection = 2;

armour.rvmat

surfaceInfo = "A3\data_f\Penetration\armour.bisurf";
ambient[] = {0.317647,0.345098,0.54902,1.0};
diffuse[] = {0.317647,0.345098,0.54902,1.0};
forcedDiffuse[] = {0,0,0,0};
emmisive[] = {0,0,0,1};
specular[] = {0,0,0,1};
specularPower = 1;
PixelShaderID = "Normal";
VertexShaderID = "Basic";

эти два файла и создают физику поверхности, в билдере цепляете именно rvmat


  • 1

#19 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 03 August 2017 - 18:54

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


  • 0

#20 OFFLINE   Airmaster911

Airmaster911

    Рядовой

  • Пользователи
  • 11 posts
  • Откуда:Ukraine

Posted 03 August 2017 - 18:56

armour.bisurf

Density=8600;
rough=0.1;
dust=0;
bulletPenetrability=15;
soundEnviron=Empty;
isWater=false;
friction=0.7;
restitution=0.3;
impact = hitMetal;
soundHit = Metal;
deflection = 2;

armour.rvmat

surfaceInfo = "A3\data_f\Penetration\armour.bisurf";
ambient[] = {0.317647,0.345098,0.54902,1.0};
diffuse[] = {0.317647,0.345098,0.54902,1.0};
forcedDiffuse[] = {0,0,0,0};
emmisive[] = {0,0,0,1};
specular[] = {0,0,0,1};
specularPower = 1;
PixelShaderID = "Normal";
VertexShaderID = "Basic";

эти два файла и создают физику поверхности, в билдере цепляете именно rvmat

Я так и делаю. Не корректный, потому что я нуб и сделал привязкув builder  к текстурам на диске P , У вас они тупо не прогрузятся.
Попробую еще ваш вариант. Спасибо.


  • 0




Яндекс.Метрика