Страница 27 из 31
Re: Свои изобретения в Railworks
Добавлено: 03 ноя 2016, 10:51
Света
Всем доброго времени суток
Требуется помощь математиков.
Суть задачи:
Упрощенный вариант, с которым мне удалось справиться:
Имеется регулятор, имеющий значение от 0 до любого числа. И есть переменная, которой надо управлять с помощью этого регулятора. Её значение также может быть от 0 до любого значения. Задача состояла в том, чтобы связать регулятор с переменной, чтобы при любых конечных значениях регулятора и переменой значение переменной менялось синхронно и пропорционально со значением регулятора.
Эта задача была решена такими формулами:
Код: Выделить всё
factor = (timing - TMR)/timing
где factor - это множитель, на который умножается максимальное значение переменной его значение меняется от 0 до 1, timing - это максимальное значение регулятора, а TMR - это текущее состояние регулятора.
По этой формуле % переменной напрямую зависит от % регулятора.
Обратная зависимость решена такой формулой:
factor = TMR/timing
Здесь при изменении регулятора от 0 до максимума значение factor изменится от 1 до 0.
Здесь всё достаточно просто.
Теперь задача посложнее.
Нужно проделать то же, но в ограниченной области, то есть не от 0 до максимума. Если
TMR изменяется от
х до 0,
factor имеет начальное значение в промежутке от 0 до 1 (например
а), конечное - также от 0 до 1 (
b), надо описать это соотношение таким образом, чтобы при
TMR =
х...0
factor =
а...
b. И обратная зависимость, где при
TMR =
х...0
factor =
b...
а.
В обоих случаях
а - это текущее значение
factor-а, а
b - задаваемое при просчете формулы.
Кто нибудь поможет?
Re: Свои изобретения в Railworks
Добавлено: 03 ноя 2016, 17:23
maestro
Никакой сложной математики здесь нет. В общем случае решение таково:
Пусть если два интервала:
A...B и
C...D
Требуется для точки
X внутри первого интервала найти точку
Y внутри второго интервала.
Процентное расположение точки
X составляет
(X - A)/(B - A).
Учитывая равенство процентных расположений внутри интервалов получаем
(X - A)/(B - A) = (Y - C)/(D - C).
Отсюда получаем
Y = (X - A) * (D - C)/(B - A) + C
Просто подставь, что нужно
Re: Свои изобретения в Railworks
Добавлено: 13 ноя 2016, 16:27
Cross
Друзья, вопрос к тем, кто работает с моделями. Объясните, что я делаю не так? Задача такова: мне нужно конвертнуть модель кабины со всеми её нодами, текстурами, анимациями и прочим. Вроде всё делаю по правилам, плагин перегоняет всё в IGS без проблем, также BlueprintEditor2 гонит в GeoPcDx, но вот тут возникает затык - модель на выходе получается размером 12кб, все ноды внутри присутствуют, а вот текстура внутри модели прописана лишь одна. Почему так?
Верно ли я делаю, если создаю в редакторе материалов 3ds max единый материал Multi/Sub-Object, где под индивидуальным ID хранится каждая текстура?
Re: Свои изобретения в Railworks
Добавлено: 13 ноя 2016, 16:57
le Sandro
Да, делаешь все верно. RW понимает мультисабы. Только внутри мультисаба все материалы должны быть RWMaterial. Именование объектов и подобъектов проверь.
Нормали у полигонов все проверь, сделай ресетХформ, либо скинь мне модель (13й макс), я посмотрю, почему не конвертится.
Re: Свои изобретения в Railworks
Добавлено: 13 ноя 2016, 17:22
Cross
le Sandro
конвертится нормально, материалы все RWMaterial, иначе конвертер будет ругаться. Именование объектов и подобъектов начинается с 1_0000_имя. Я думаю, что в данном случае делать LODы нет смысла, так как это кабина при виде изнутри. Нормали повёрнуты в нужную сторону, я в максе специально поставил галку в настройках отображения BackfaceCull, чтобы видеть, где полигон вывернут. Проблема только на выходе. В модель пишется только одна текстура.
Допустим вот так:
Код: Выделить всё
<Material>
<cHcEffectMaterialDx d:id="31652272">
<ShaderName d:type="cDeltaString">TrainSpecEnvMask.fx</ShaderName>
<TextureByName>
<e d:type="cDeltaString">textures\[00]main_1</e>
<e d:type="cDeltaString">textures\[00]main_1</e>
</TextureByName>
<Name d:type="cDeltaString">Main_1</Name>
<CollisionSurface d:type="cDeltaString">METAL</CollisionSurface>
<VertexType d:type="ref">31632656</VertexType>
<FrameAlphaMode d:type="cDeltaString">ALPHA_MODE_NONE</FrameAlphaMode>
<PassPlatformData/>
<FloatParam>
<cHcEffectMaterialDx-cFloatParam d:id="31652476">
<Name d:type="cDeltaString">SPECULARPOWER</Name>
<Value d:type="sFloat32" d:alt_encoding="000000000000F03F" d:precision="string">1</Value>
</cHcEffectMaterialDx-cFloatParam>
<cHcEffectMaterialDx-cFloatParam d:id="31652488">
<Name d:type="cDeltaString">CUSTOMPARAM0</Name>
<Value d:type="sFloat32" d:alt_encoding="0000000000004040" d:precision="string">32</Value>
</cHcEffectMaterialDx-cFloatParam>
<cHcEffectMaterialDx-cFloatParam d:id="31652500">
<Name d:type="cDeltaString">CUSTOMPARAM1</Name>
<Value d:type="sFloat32" d:alt_encoding="0000000000000000" d:precision="string">0</Value>
</cHcEffectMaterialDx-cFloatParam>
<cHcEffectMaterialDx-cFloatParam d:id="31652512">
<Name d:type="cDeltaString">CUSTOMPARAM2</Name>
<Value d:type="sFloat32" d:alt_encoding="0000000000000000" d:precision="string">0</Value>
</cHcEffectMaterialDx-cFloatParam>
<cHcEffectMaterialDx-cFloatParam d:id="31652524">
<Name d:type="cDeltaString">CUSTOMPARAM3</Name>
<Value d:type="sFloat32" d:alt_encoding="0000000000000000" d:precision="string">0</Value>
</cHcEffectMaterialDx-cFloatParam>
<cHcEffectMaterialDx-cFloatParam d:id="31652536">
<Name d:type="cDeltaString">CUSTOMPARAM4</Name>
<Value d:type="sFloat32" d:alt_encoding="0000000000000000" d:precision="string">0</Value>
</cHcEffectMaterialDx-cFloatParam>
<cHcEffectMaterialDx-cFloatParam d:id="31652548">
<Name d:type="cDeltaString">CUSTOMPARAM5</Name>
<Value d:type="sFloat32" d:alt_encoding="0000000000000000" d:precision="string">0</Value>
</cHcEffectMaterialDx-cFloatParam>
</FloatParam>
<VectorParam>
<cHcEffectMaterialDx-cVectorParam d:id="31652672">
<Name d:type="cDeltaString">AMBIENT</Name>
<Value d:numElements="4" d:elementType="sFloat32" d:precision="string">0.0000000 0.0000000 0.0000000 0.0000000</Value>
</cHcEffectMaterialDx-cVectorParam>
<cHcEffectMaterialDx-cVectorParam d:id="31652696">
<Name d:type="cDeltaString">EMISSIVE</Name>
<Value d:numElements="4" d:elementType="sFloat32" d:precision="string">0.0000000 0.0000000 0.0000000 0.0000000</Value>
</cHcEffectMaterialDx-cVectorParam>
<cHcEffectMaterialDx-cVectorParam d:id="31652720">
<Name d:type="cDeltaString">SPECULARCOLOR</Name>
<Value d:numElements="4" d:elementType="sFloat32" d:precision="string">1.0000000 1.0000000 1.0000000 1.0000000</Value>
</cHcEffectMaterialDx-cVectorParam>
<cHcEffectMaterialDx-cVectorParam d:id="31652744">
<Name d:type="cDeltaString">DIFFUSECOLOR</Name>
<Value d:numElements="4" d:elementType="sFloat32" d:precision="string">1.0000000 1.0000000 1.0000000 1.0000000</Value>
</cHcEffectMaterialDx-cVectorParam>
</VectorParam>
<AlphaTestType d:type="cDeltaString">HC_ALPHATEST_ALWAYS</AlphaTestType>
<AlphaRef d:type="sUInt32">127</AlphaRef>
<TwoSided d:type="bool">0</TwoSided>
<MipLodBias>
<e d:type="sFloat32" d:alt_encoding="0000000000000000" d:precision="string">0</e>
<e d:type="sFloat32" d:alt_encoding="0000000000000000" d:precision="string">0</e>
</MipLodBias>
<TextureAddrModeU>
<e d:type="cDeltaString">HC_TEXTURE_ADDR_MODE_WRAP</e>
<e d:type="cDeltaString">HC_TEXTURE_ADDR_MODE_WRAP</e>
</TextureAddrModeU>
<TextureAddrModeV>
<e d:type="cDeltaString">HC_TEXTURE_ADDR_MODE_WRAP</e>
<e d:type="cDeltaString">HC_TEXTURE_ADDR_MODE_WRAP</e>
</TextureAddrModeV>
<TextureAddrModeW>
<e d:type="cDeltaString">HC_TEXTURE_ADDR_MODE_WRAP</e>
<e d:type="cDeltaString">HC_TEXTURE_ADDR_MODE_WRAP</e>
</TextureAddrModeW>
<BorderColour>
<e d:type="sUInt32">17</e>
<e d:type="sUInt32">1929381121</e>
</BorderColour>
</cHcEffectMaterialDx>
</Material>
Дальше в тегах SourceLToPTransform есть все координаты нодов.
теги TransformDependency тоже содержат какие-то цифры для всех нодов.
и TransformName внутри имеет полноценный список всех сконверченых нодов.
Re: Свои изобретения в Railworks
Добавлено: 14 ноя 2016, 00:12
olegich
Cross писал(а): возникает затык - модель на выходе получается размером 12кб
потому что модель не прошла конверт,прошли только координаты,саму модель
без нодов и всего лишнего попробуй прогнать,возможно в ней косяк,а текстуры и без нее конвертятся и прописываются блюпринтом если они RWшные
Re: Свои изобретения в Railworks
Добавлено: 14 ноя 2016, 08:13
le Sandro
У меня сконвертилась нормально, когда пути в source правильно прописал.
Re: Свои изобретения в Railworks
Добавлено: 14 ноя 2016, 12:20
Cross
один объект нормально экспортирует. Три тоже проходят. А вот начинаешь целиковую модель перегонять, так снова на выходе получается куча нодов в списке и одна текстура. В игре ясное дело только одна часть модели, для которой прописалась соответствующая текстура. А куда девается остальное - неясно)
Re: Свои изобретения в Railworks
Добавлено: 14 ноя 2016, 13:33
olegich
Если блюпринт не ругается при конверте значит проблемма в модели либо в именах зависящих элементов,а скрин окончания экспорта в максе можно увидеть когда все вместе идет?
Re: Свои изобретения в Railworks
Добавлено: 14 ноя 2016, 14:58
le Sandro
Вечером покажу. У меня вся модель целиком из макса сконвертилась. IGS получился в районе 8Mb.
Re: Свои изобретения в Railworks
Добавлено: 14 ноя 2016, 15:13
Cross
olegich
в максе проходит экспорт всех видимых нодов, в самом низу списка строчка completed. IGS при этом тоже где-то в районе 8Mb, а дальше из BlueprintEditor2 выходит гео модель весом 182кб. Щас сам пробую частями проводить конверт, добавляя каждый элемент в общую модель и смотрю как всё выглядит в игре.
Re: Свои изобретения в Railworks
Добавлено: 14 ноя 2016, 18:11
olegich
Cross писал(а):olegich Щас сам пробую частями проводить конверт, добавляя каждый элемент в общую модель и смотрю как всё выглядит в игре.
есть прогресс?
Re: Свои изобретения в Railworks
Добавлено: 14 ноя 2016, 18:39
Cross
olegich
Да, есть прогресс. Затык был из-за двух объектов с одинаковым именем. Перелопатил почти всё, а обнаружил случайно
Re: Свои изобретения в Railworks
Добавлено: 14 ноя 2016, 18:46
olegich
бывает
порой все разберешь до маленьких частей что бы найти ошибку
Re: Свои изобретения в Railworks
Добавлено: 14 ноя 2016, 19:09
Cross
сейчас другие сложности - модель стекла не хочет настраиваться. Если смотреть максимально вправо, стекло появляется, но с жуткими артефактами как на HST от Oovee, все помнят этот глюк. Материал настроен вроде правильно, как в оригинальной модели, про Mip уровни знаю мало, поэтому только экспериментами удаётся чего-то добиться
Re: Свои изобретения в Railworks
Добавлено: 14 ноя 2016, 19:25
olegich
Cross писал(а):сейчас другие сложности - модель стекла не хочет настраиваться. Если смотреть максимально вправо, стекло появляется, но с жуткими артефактами как на HST от Oovee, все помнят этот глюк. Материал настроен вроде правильно, как в оригинальной модели, про Mip уровни знаю мало, поэтому только экспериментами удаётся чего-то добиться
стекло на окнах или приборах?с MIPами тоже не занимался,не делал и со стеклом не было проблем
Re: Свои изобретения в Railworks
Добавлено: 14 ноя 2016, 19:31
Cross
olegich
окна делаю. Сейчас при виде спереди всё вот так:
Когда смотришь вправо, то так:
Re: Свои изобретения в Railworks
Добавлено: 14 ноя 2016, 19:36
olegich
какой шейдер и текстура с альфой?и если сделать скрин кабины со стороны окна то можно использовать как текстуру для окна,уменьшив прозрачность и получить псевдо отражение кабины при взгляде в окно
Re: Свои изобретения в Railworks
Добавлено: 14 ноя 2016, 19:41
Cross
Специальный для этого шейдер TrainGlassWeatherEffects.fx использую.
wiperdiff_nm - диффузная текстура с альфой 32 битная.
wipernorm_nm - карта нормалей с альфой 32 битная.
wiperanim_nm - карта для того, чтобы убирать капли со стекла во время работы стеклоочистителей. С альфой 32 битная.
Материал настроен как в оригинале.
--- добавлено позже в 14 ноя 2016, 19:42 ---
olegich
каким бы образом сделать псевдоотражение ?
Re: Свои изобретения в Railworks
Добавлено: 14 ноя 2016, 19:52
le Sandro
Cross, для начала попробуй настроить TrainGlass. Где-то был хороший ман по настройке этого шейдера. Потом уже подключишь погодные эффекты.