Свои изобретения в Railworks

Обсуждение вопросов и решение проблем, связанных с внутриигровым редактором, а также процессом разработки самостоятельных дополнений или игровых модификаций.
Аватара пользователя
Света
Разработчик
Сообщения: 752
Зарегистрирован: 13 мар 2015
Репутация: 1470

Re: Свои изобретения в Railworks

Сообщение Света »

Всем доброго времени суток :)

Требуется помощь математиков.
Суть задачи:
Упрощенный вариант, с которым мне удалось справиться:
Имеется регулятор, имеющий значение от 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 - задаваемое при просчете формулы.

Кто нибудь поможет? :oops:
Сильные люди - это не те, у которых всё хорошо, а те, у которых всё хорошо несмотря ни на что.
maestro
Разработчик
Сообщения: 140
Зарегистрирован: 11 ноя 2011
Репутация: 268

Re: Свои изобретения в Railworks

Сообщение 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

Просто подставь, что нужно :beer:
Маршрут "Лесной край". Вся актуальная информация на RailUnion.net. Поддержать проект Яндекс.Деньгами: 410012195452990
Набор утилит TS Editor для Train Simulator: RailroadSim.net, обсуждение на RailUnion.net & RailWorks2.ru
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Свои изобретения в Railworks

Сообщение Cross »

Друзья, вопрос к тем, кто работает с моделями. Объясните, что я делаю не так? Задача такова: мне нужно конвертнуть модель кабины со всеми её нодами, текстурами, анимациями и прочим. Вроде всё делаю по правилам, плагин перегоняет всё в IGS без проблем, также BlueprintEditor2 гонит в GeoPcDx, но вот тут возникает затык - модель на выходе получается размером 12кб, все ноды внутри присутствуют, а вот текстура внутри модели прописана лишь одна. Почему так?
Верно ли я делаю, если создаю в редакторе материалов 3ds max единый материал Multi/Sub-Object, где под индивидуальным ID хранится каждая текстура?
*Train Simulator 2018*
Изображение
le Sandro
Разработчик
Сообщения: 705
Зарегистрирован: 15 фев 2012
Откуда: Пенза
Репутация: 462

Re: Свои изобретения в Railworks

Сообщение le Sandro »

Да, делаешь все верно. RW понимает мультисабы. Только внутри мультисаба все материалы должны быть RWMaterial. Именование объектов и подобъектов проверь.
Нормали у полигонов все проверь, сделай ресетХформ, либо скинь мне модель (13й макс), я посмотрю, почему не конвертится.
Мы с PNZ.
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Свои изобретения в Railworks

Сообщение 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 внутри имеет полноценный список всех сконверченых нодов.
*Train Simulator 2018*
Изображение
Аватара пользователя
olegich
Разработчик
Сообщения: 250
Зарегистрирован: 03 авг 2015
Откуда: Дзержинск,ниж. обл.
Репутация: 925

Re: Свои изобретения в Railworks

Сообщение olegich »

Cross писал(а): возникает затык - модель на выходе получается размером 12кб
потому что модель не прошла конверт,прошли только координаты,саму модель
без нодов и всего лишнего попробуй прогнать,возможно в ней косяк,а текстуры и без нее конвертятся и прописываются блюпринтом если они RWшные
le Sandro
Разработчик
Сообщения: 705
Зарегистрирован: 15 фев 2012
Откуда: Пенза
Репутация: 462

Re: Свои изобретения в Railworks

Сообщение le Sandro »

У меня сконвертилась нормально, когда пути в source правильно прописал.
Мы с PNZ.
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Свои изобретения в Railworks

Сообщение Cross »

один объект нормально экспортирует. Три тоже проходят. А вот начинаешь целиковую модель перегонять, так снова на выходе получается куча нодов в списке и одна текстура. В игре ясное дело только одна часть модели, для которой прописалась соответствующая текстура. А куда девается остальное - неясно)
*Train Simulator 2018*
Изображение
Аватара пользователя
olegich
Разработчик
Сообщения: 250
Зарегистрирован: 03 авг 2015
Откуда: Дзержинск,ниж. обл.
Репутация: 925

Re: Свои изобретения в Railworks

Сообщение olegich »

Если блюпринт не ругается при конверте значит проблемма в модели либо в именах зависящих элементов,а скрин окончания экспорта в максе можно увидеть когда все вместе идет?
le Sandro
Разработчик
Сообщения: 705
Зарегистрирован: 15 фев 2012
Откуда: Пенза
Репутация: 462

Re: Свои изобретения в Railworks

Сообщение le Sandro »

Вечером покажу. У меня вся модель целиком из макса сконвертилась. IGS получился в районе 8Mb.
Мы с PNZ.
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Свои изобретения в Railworks

Сообщение Cross »

olegich
в максе проходит экспорт всех видимых нодов, в самом низу списка строчка completed. IGS при этом тоже где-то в районе 8Mb, а дальше из BlueprintEditor2 выходит гео модель весом 182кб. Щас сам пробую частями проводить конверт, добавляя каждый элемент в общую модель и смотрю как всё выглядит в игре.
*Train Simulator 2018*
Изображение
Аватара пользователя
olegich
Разработчик
Сообщения: 250
Зарегистрирован: 03 авг 2015
Откуда: Дзержинск,ниж. обл.
Репутация: 925

Re: Свои изобретения в Railworks

Сообщение olegich »

Cross писал(а):olegich Щас сам пробую частями проводить конверт, добавляя каждый элемент в общую модель и смотрю как всё выглядит в игре.
есть прогресс?
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Свои изобретения в Railworks

Сообщение Cross »

olegich
Да, есть прогресс. Затык был из-за двух объектов с одинаковым именем. Перелопатил почти всё, а обнаружил случайно
*Train Simulator 2018*
Изображение
Аватара пользователя
olegich
Разработчик
Сообщения: 250
Зарегистрирован: 03 авг 2015
Откуда: Дзержинск,ниж. обл.
Репутация: 925

Re: Свои изобретения в Railworks

Сообщение olegich »

бывает :) порой все разберешь до маленьких частей что бы найти ошибку
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Свои изобретения в Railworks

Сообщение Cross »

сейчас другие сложности - модель стекла не хочет настраиваться. Если смотреть максимально вправо, стекло появляется, но с жуткими артефактами как на HST от Oovee, все помнят этот глюк. Материал настроен вроде правильно, как в оригинальной модели, про Mip уровни знаю мало, поэтому только экспериментами удаётся чего-то добиться
*Train Simulator 2018*
Изображение
Аватара пользователя
olegich
Разработчик
Сообщения: 250
Зарегистрирован: 03 авг 2015
Откуда: Дзержинск,ниж. обл.
Репутация: 925

Re: Свои изобретения в Railworks

Сообщение olegich »

Cross писал(а):сейчас другие сложности - модель стекла не хочет настраиваться. Если смотреть максимально вправо, стекло появляется, но с жуткими артефактами как на HST от Oovee, все помнят этот глюк. Материал настроен вроде правильно, как в оригинальной модели, про Mip уровни знаю мало, поэтому только экспериментами удаётся чего-то добиться
стекло на окнах или приборах?с MIPами тоже не занимался,не делал и со стеклом не было проблем
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Свои изобретения в Railworks

Сообщение Cross »

olegich
окна делаю. Сейчас при виде спереди всё вот так:
Изображение
Когда смотришь вправо, то так:
Изображение
*Train Simulator 2018*
Изображение
Аватара пользователя
olegich
Разработчик
Сообщения: 250
Зарегистрирован: 03 авг 2015
Откуда: Дзержинск,ниж. обл.
Репутация: 925

Re: Свои изобретения в Railworks

Сообщение olegich »

какой шейдер и текстура с альфой?и если сделать скрин кабины со стороны окна то можно использовать как текстуру для окна,уменьшив прозрачность и получить псевдо отражение кабины при взгляде в окно
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Свои изобретения в Railworks

Сообщение Cross »

Специальный для этого шейдер TrainGlassWeatherEffects.fx использую.
wiperdiff_nm - диффузная текстура с альфой 32 битная.
wipernorm_nm - карта нормалей с альфой 32 битная.
wiperanim_nm - карта для того, чтобы убирать капли со стекла во время работы стеклоочистителей. С альфой 32 битная.
Материал настроен как в оригинале.

--- добавлено позже в 14 ноя 2016, 19:42 ---

olegich
каким бы образом сделать псевдоотражение ?
*Train Simulator 2018*
Изображение
le Sandro
Разработчик
Сообщения: 705
Зарегистрирован: 15 фев 2012
Откуда: Пенза
Репутация: 462

Re: Свои изобретения в Railworks

Сообщение le Sandro »

Cross, для начала попробуй настроить TrainGlass. Где-то был хороший ман по настройке этого шейдера. Потом уже подключишь погодные эффекты.
Мы с PNZ.
Ответить