Ich habs mit dem Konverter bisher auch nicht geschafft. Ich habe die Vermutung, dass es vielleicht an den Animationen liegt, weiß es aber nicht genau. Das wird wohl ein bischen dauern...
Beiträge von ritknat
Willkommen in der Transport Fever Community
Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.
Die Registrierung und Nutzung ist selbstverständlich kostenlos.
Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.
Das Team der Transport-Fever Community
-
-
Hallo EMP
Das sollte kein Problem sein. Mit welchem Bildbearbeitungsprogramm arbeitest Du? ich kann dir da eventuell rohdaten schicken, dann fällt es dir leichter?
-
Hi
meine Modanfrage wäre ob jemand eine Mediterrane Klimazone modden kann / möchte.
Auf Steam gibt es ja schon ein "Rocky Climate" .
Gerade da jetzt auch viele Italienische Modelle gemoddet werden (und für die Französichen) wäre das eine grandiose Ergänzung.
Ich denke da an trockene Hügel aber Grün in den Tälern (wo es Wasser gibt) und andere Bäume. Also nicht so wüstenmäßig wie das USA-Klima aber trockener als das gemäßigte.Hi
my mod request would be if anyone can / would like to modd a Mediterranean climate zone.
There is already a "Rocky Climate" on Steam.
As there are many Italian models being built (and French) that would be a great addition.
I am thinking of dry hills but green valleys (there is water) and more dry-climate-trees. I would think of a setting that is not as desset-like as the American Climate
-
Sehr schön. Wo hast Du eigentlich die Gebäude her, v.a. der große Bauernhof/Gutshof im ersten Bild?
-
Das sind schon echt sehr schöne Bilder, die Du da machst, ich hab nicht so die Ruhe für den Schönbau...

p.s.: Ich mach ja nur (un)gern Eigenwerbung für meine Gitterträgerbrücke, die sich perfekt in die Epoche einfügen würde ..

-
Yes I think I can make it smaller but I am not sure if scaling alone will work..
-- edit --
I included 2 more sizes, now I have:
S: 73.5 - 110.5 m
M: 102.0 - 152.5 m
L: 138.0 - 207.5m
The smallest size needed some compromises: I couldn't scale the height further down so it looks a bit compressed..
-
auch in Grün, passend zu meinen Gitterträgerbrücken, speziell passend zur Version ohne Gitterfachwerk
green version fitting to my Lattice-Truss-Bridge
-
-
Ist die Brücke ein Mod oder im Game? Sieht gut aus, allerdings stimmt das Verhältnis Höhe zu Länge nicht so zusammen. Wirkt viel zu hoch und daher sehr Spielzeughaft. Die sollte so ca. halb so hoch und ca. 1,5 mal so lange sein, oder so ähnlich ..

Es gibt nun die Möglichkeit, Brücken von Anfang bis Ende zu konfigurieren und nicht nur segmentweise! ( ritknat ist vielleicht für dich von Interesse )
Könnte sein, müsste ich mir anschauen..
-
I am doing good progress - here is an image of my first try in-game (scaling and adjusting to track-inclination).
i still need to go back to modelling: i need LODs, the pillars for the bridge itself, more texture mapping and i am thinking of making some more size-variations of the bridge. - it will need another week or 2 or 3 or 4 ....

-
-
some picture of progress.
After not modding for a year or so I forgot a lot about Materials. I am trying to make all the small trusses with transparent Materials but the hard part is this thing with render-order of Materials and two-sided transparent materials are making me headaches...

apart from that, there is still a lot of work to do with texturing and normal mapping to add some detail, but here is my first test in the model-editor:
-
Ich grüße hier auch mal und heiße WIllkommen!
Natürlich habe auch ich meine Wüsnche und Gedanken zum Spiel:
Ich finde die meisten Ideen, Welche hier und auch in anderen Tröts geäußert wurden gut.
Ich persönlich bleibe immer an der mMn zu kleinen Spielwelt hängen.
Manche Hochgeschw. Züge oder gar Flughäfen machen einfach keinen Sinn in der TpF Reihe, so schön sie auch anzusehen sind.
Dem mit der zu kleinen Map kann ich nur zustimmen! Züge sollten ihre Geschwindigkeit auch fahren können. Allerdings vermute ich müsste für eine noch größere Map die Simulation deutlich vereinfacht werden..
Außerdem bin ich auch jemand der wie luftfisch_ug gerne effizient und ästhetisch spielt. D.h. im Kern doch die WiSim steht, aber mit der einen oder anderen Verschönerung oder ein paar Assets. Leider ist die WiSim noch verbesserungswürdig. Am Spielbeginn ist es recht hart mal ins Laufen zu kommen, später wird man fast unweigerlich zum Milliardär. Da wäre ein Mittelding schön..
Ich sehe aber auch, dass in TpF 2 schon viele Dinge umgesetzt wurden die in den Vorgängerversionen nur über Umwege zu lösen waren. Stichwort Brücken z.B.: Die In-Game-Brücken sind noch immer weit von der Realität entfernt (Pfeielrabstände, Spaghettipfeiler bei großen Höhen etc.) aber jetzt gibt es die Option Brücken ohne Pfeiler zu modden und nicht unsichtbaer Fake-Pfeiler wverwenden zu müssen
Das manuelle Pfeiler-setzen ist aber noch das Mittel der Wahl, wenns halbwegs realistisch sein soll..Kurz gesagt: Die Richtung stimmt, es wird viel gemacht. Gut so !
Ich hoffe es geht weiter so - nur bitte nicht gleich ein TpF 3 planen, wo alle Mods wieder mit viel Mühe hinübergerettet werden müssen.. Ich glaube da würden dann viele Leute aussteigen, wenn in 2 Jahren wieder neu begonnen werden muss. -
Danke!
Die Bogenbrücke ist schon länger mit dabei und passt von der Höhe nur zur kleinen Variante der Brücke. Ich müsste dann noch weitere Varianten machen um einen Bogen mit höherem Ansatz zu bauen. Das hätte ich im Moment aber nicht geplant.. Ich werde jetzt mal an meiner neuen Brücke weiterarbeiten..
-
Liebe Leute, Dear Community
Nachdem mein Projekt, die Gitterbrücke in TpF2 zu bringen, gerade nicht voran kommt.... Ich hab leider noch nicht herausgefunden wie ich das rüberbekomme ohne die Brücken komplett neu aufzubauen und die Geometrie anzupassen. Was wiederum bedeuten würde mich mit Texturen Mapping etc. herumzuschlagen.
As my project of converting my Lattice-bridges to TpF2 is kind of stuck at the moment... I cannot figure out a way how to convert it without remodelling a lot of the geometry - that is not so motivating at the moment..
As Angier023 already built a nice pack of bridges I had the idea to add a large trussbridge as an asset, that can work with his bridges. Here is an early Image:
I plan to have:
single - or double track
length from approx. 120 to 200m (scaleable)
for crossing large rivers etc..
3D-model is progressing well, texture etc. will need more time of course. -
I started working on this. I did some successful steps with the help of the community here, but the logic of bridges is generally a bit different in TpF2. So It needs more time, testing and experimenting..

-
Ich habs gerade geschafft. Grundsätzlich zumindest..

Ich habe schon mal versucht gehabt alle Infos zu den Pillars einfach zu löschen, bekam aber die Fehlermeldung und habe es wieder zurückgeführt. jetzt habe ich das noch einmal erfolgreich versucht und einfach die Config von Onkel_Lu's Unsichtbarer Brücke übernommen und angepasst.
Hier ohne Pillars:
Code
Alles anzeigenlocal bridgeutil = require "bridgeutil" function data() local dir = "bridge/ritknat_gitter/" local railing = { dir .. "gitterbruecke_A.mdl", dir .. "gitterbruecke_A.mdl", dir .. "gitterbruecke_B.mdl", dir .. "gitterbruecke_A.mdl", dir .. "gitterbruecke_A.mdl", dir .. "gitterbruecke_A.mdl", dir .. "gitterbruecke_A.mdl", dir .. "gitterbruecke_B.mdl", } local config = { railingBegin = railing, railingRepeat = railing, railingEnd = railing, } return { name = _("Gitterbruecke gross"), yearFrom = 1875, yearTo = 0, carriers = { "RAIL" , "ROAD"}, speedLimit = 600.0 / 3.6, pillarLen = 100, pillarMinDist = 6.0, pillarMaxDist = 132.0, pillarTargetDist = 48.0, cost = 0.0, materialsToReplace = { streetPaving = { name = "street/country_new_medium_paving.mtl", }, streetLane = { name = "street/new_medium_lane.mtl", }, crossingLane = { name = "street/new_medium_lane.mtl", }, sidewalkPaving = { name = "street/new_medium_sidewalk.mtl", }, sidewalkBorderInner = { name = "street/new_medium_sidewalk_border_inner.mtl", size = { 3, 0.6 } }, }, updateFn = bridgeutil.makeDefaultUpdateFn(config), } endJetzt spiegelt es mir allerdings die beiden Brückenseiten - Das sollte hoffentlich leicht zu knacken sein

-
Sind bei den mdls überall Boundingboxen angegeben?
Die könnten auch das Problem sein, wenn ich das richtig interpretiere..
Dabei kenne ich mich aber noch nicht wirklich aus - Da muss ich noch recherchieren wie BoundingBoxen grundsätzlich funktionieren. Das hat bisher für TpF1 der Blender-Exporter für mich gemacht.
-
Ich denke schon. damit habe ich auch schon experimentiert, obwohl ich mich damit nicht so perfekt auskenne
-
Hier mal eine Kopie der gesamten bridgeutil:
Code
Alles anzeigenrequire "tableutil" local transf = require "transf" local vec3 = require "vec3" local bridgeutil = { } local getMaxSize = function(modelData, models, dim, inverted) local result = .0 for i = 1, #models do local size = inverted and -modelData[models[i]].min[dim] or modelData[models[i]].max[dim] if size > result then result = size end end return result end local getSizes = function(modelData, models, dim, inverted) local result = { } for i = 1, #models do --table.insert(result, (#inverted == 1 and inverted[1] or inverted[i]) and -modelData[models[i]].min[dim] or modelData[models[i]].max[dim]) table.insert(result, modelData[models[i]].max[dim]) end return result end local getSteps = function(indices, flipped, refSizes, size) if #indices == 1 then return { { idx = 1, refSize = refSizes[1], flipped = flipped[1] } } end assert(#indices == 3) assert(indices[2] > 0) local minSize = .0 if indices[1] > 0 then minSize = minSize + refSizes[indices[1]] end if indices[3] > 0 then minSize = minSize + refSizes[indices[3]] end local repeatSize = math.max(size - minSize, .0) local numRepeat = math.floor(repeatSize / refSizes[indices[2]] + .5) if indices[1] <= 0 and indices[3] <= 0 and numRepeat == 0 then numRepeat = 1 end -- TODO HACK minSize = minSize + numRepeat * refSizes[indices[2]] local scale = size / minSize local steps = { } if indices[1] > 0 then table.insert(steps, { idx = indices[1], refSize = scale * refSizes[indices[1]], flipped = flipped[1] }) end for j = 1, numRepeat do table.insert(steps, { idx = indices[2], refSize = scale * refSizes[indices[2]], flipped = flipped[2] }) end if indices[3] > 0 then table.insert(steps, { idx = indices[3], refSize = scale * refSizes[indices[3]], flipped = flipped[3] }) end return steps end function bridgeutil.getRailingInterval(params, pillarIndex, before) local count = 0 for i = 1, #params.railingIntervals do local interval = params.railingIntervals[i] if before and interval.hasPillar[1] then count = count + 1 end if not before and interval.hasPillar[2] then count = count + 1 end if count == pillarIndex then return interval end end assert(false) return -1 end function bridgeutil.configurePillar(modelData, pillarModels, height, width) assert(#pillarModels == 3) local result = { } result.models = pillarModels result.dim1 = 3 result.dim2 = 2 result.size1 = height result.size2 = width result.inverted = { false, false, true } result.flipped = { } result.refSizes1 = { } result.refSizes2 = { } result.indices1 = { 1, 2, 3 } result.indices2 = { } for i = 1, #pillarModels do table.insert(result.refSizes1, getMaxSize(modelData, pillarModels[i], result.dim1, result.inverted[i])) assert(#pillarModels[i] == 1 or #pillarModels[i] == 2 or #pillarModels[i] == 3) result.indices2[i] = #pillarModels[i] == 3 and { 1, 2, 3 } or #pillarModels[i] == 2 and { 1, 2, 1 } or { 1 } result.flipped[i] = #pillarModels[i] == 3 and { false, false, false } or #pillarModels[i] == 2 and { false, false, true } or { false } table.insert(result.refSizes2, getSizes(modelData, pillarModels[i], result.dim2, { false, false, false })) end result.min2 = #pillarModels[1] == 1 and .0 or -.5 * width -- TODO HACK return result end function bridgeutil.configureRailing(modelData, interval, railingModels, length, width) assert(#railingModels == 3) local result = { } result.models = railingModels result.dim1 = 1 result.dim2 = 2 result.size1 = length result.size2 = width result.inverted = { false, false, false } result.flipped = { } result.refSizes1 = { } result.refSizes2 = { } local lanes = interval.lanes local centerY = #lanes % 2 == 0 and .5 * (lanes[#lanes / 2].offset + lanes[#lanes / 2 + 1].offset) or lanes[(#lanes + 1) / 2].offset result.min2 = centerY - .5 * width local typeRight = lanes[1].type local typeLeft = lanes[#lanes].type local hasCollision = (typeRight > 0 or typeLeft > 0) local hasCollModels = #railingModels[1] == 5 or 8 -- TODO HACK 3 side and 2 rep, doubled for flipped local rightIdx = (typeRight <= 1) and ((hasCollModels and hasCollision) and 2 or 1) or (hasCollModels and 3 or 2) local leftIdx = (typeLeft % 2 == 0) and ((hasCollModels and hasCollision) and 2 or 1) or (hasCollModels and 3 or 2) local repIdx = hasCollModels and (hasCollision and 5 or 4) or 2 result.indices1 = { interval.hasPillar[1] and 1 or -1, 2, interval.hasPillar[2] and 3 or -1 } result.indices2 = { } for i = 1, #railingModels do table.insert(result.refSizes1, getMaxSize(modelData, railingModels[i], result.dim1, result.inverted[i])) local flipOffset = 0 if #railingModels[i] > 5 then flipOffset = 5 end result.indices2[i] = { rightIdx, repIdx, leftIdx + flipOffset } result.flipped[i] = { false, false, #railingModels[i] <= 5 and true or 1 } table.insert(result.refSizes2, getSizes(modelData, railingModels[i], result.dim2, {false, false, #railingModels[i] <= 5 and false or true})) end return result end function bridgeutil.repeat2D(modelData, config) local result = { } local steps1 = getSteps(config.indices1, { false, false, false}, config.refSizes1, config.size1) local pos1 = .0 for i = 1, #steps1 do local rowResult = { } local idx1 = steps1[i].idx local size1 = steps1[i].refSize local inverted = config.inverted[idx1] local offset1 = inverted and size1 or .0 local steps2 = getSteps(config.indices2[idx1], config.flipped[idx1], config.refSizes2[idx1], config.size2) local pos2 = config.min2 for j = 1, #steps2 do local idx2 = steps2[j].idx local size2 = steps2[j].refSize local flipped = steps2[j].flipped and steps2[j].flipped ~= 1 local model = config.models[idx1][idx2] local size = table.copy(modelData[model].max) if inverted then size[config.dim1] = -modelData[model].min[config.dim1] end local offset2 = (flipped or steps2[j].flipped == 1) and size2 or .0 local scale = { 1.0, 1.0, 1.0 } scale[config.dim1] = size[config.dim1] > 0 and size1 / size[config.dim1] or 1 scale[config.dim2] = (flipped and -1 or 1) * (size[config.dim2] > 0 and size2 / size[config.dim2] or 1) local pos = { .0, .0, .0 } pos[config.dim1] = pos1 + offset1 pos[config.dim2] = pos2 + offset2 local scaleVec = vec3.new(scale[1], scale[2], scale[3]) local posVec = vec3.new(pos[1], pos[2], pos[3]) local modelTransf = transf.scaleXYZRotZTransl(scaleVec, .0, posVec) table.insert(rowResult, { id = model, transf = modelTransf }) pos2 = pos2 + size2 end table.insert(result, rowResult) pos1 = pos1 + size1 end return result end function bridgeutil.makeDefaultUpdateFn(data) return function(params) local modelData = params.state.models local configurePillar = data.configurePillar and data.configurePillar or function(modelData, params, i, height, width) return bridgeutil.configurePillar(modelData, { data.pillarBase, data.pillarRepeat, data.pillarTop }, height, width) end local result = { } result.pillarModels = { } result.railingModels = { } local pillarWidth = (not data.pillarWidth or data.pillarWidth < .0) and params.railingWidth or data.pillarWidth for i = 1, #params.pillarHeights do local pillarConfig = configurePillar(modelData, params, i, params.pillarHeights[i], pillarWidth) local pillarResult = bridgeutil.repeat2D(modelData, pillarConfig) table.insert(result.pillarModels, pillarResult) end local railingModels = { data.railingBegin, data.railingRepeat, data.railingEnd } for i = 1, #params.railingIntervals do local interval = params.railingIntervals[i] local railingConfig = bridgeutil.configureRailing(modelData, interval, railingModels, interval.length, params.railingWidth) local intervalResult = bridgeutil.repeat2D(modelData, railingConfig) table.insert(result.railingModels, intervalResult) end return result end end return bridgeutil