Страница 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 - задаваемое при просчете формулы.

Кто нибудь поможет? :oops:

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

Просто подставь, что нужно :beer:

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. Где-то был хороший ман по настройке этого шейдера. Потом уже подключишь погодные эффекты.