The rules have been updated, read them now: Rules!

porting UE4 maps cross engines (well, eventually :D)

Post questions about game models here, or help out others!
Post Reply
philoosopher
ultra-n00b
Posts: 2
Joined: Wed Feb 17, 2021 12:58 pm

porting UE4 maps cross engines (well, eventually :D)

Post by philoosopher » Wed Feb 17, 2021 1:23 pm

If this topic is not in the right subsection, please feel free to move it!

This is just some sort of FYI, in case...
I have another thread, similar, on Gildor's forum, but maybe it can be useful here. Please feel free to delete, if needed!

Anyways, to summarize, I made some simple extensions to Gildor's code, and a simple dump to ASCII/text for unreal engine 4 maps, with focus on interiors, or maps they do not actually use landscapes. Currently it includes transform for static meshes, point lights, spotlights and sphere reflection capture. It can also handle some wildcards, so for example in the subfolder Wilderness from Little Nightmares 2, there are 69 umap files that are all parsed in one dump

After that, for now only for unreal engine 4, in my tests, I made a simple parser that runs on a custom engine build immediately after the editor world is being created.

The parser basically re-creates the unreal engine map when the editor starts up from the data parsed from that plain text dump

Some example of how the plaintext dump looks like ( from Little Nightmares 2 wilderness map/s)

Code: Select all

ClassName: StaticMeshComponent ObjectName: StaticMeshComponent0
    StaticMesh = StaticMesh4'/Game/Environment/Objects/Generic/Electronics/TVs/SM_ApartmentTV_Hanging.SM_ApartmentTV_Hanging'
    RelativeLocation = { X=-4775.22, Y=-46351.4, Z=402.874 }
    RelativeRotation = { Yaw=1122793764, Pitch=-1092099118, Roll=1082804549 }
    RelativeScale3D = { X=0.867548, Y=0.867548, Z=0.867548 }

Code: Select all

ClassName: PointLightComponent ObjectName: LightComponent0
    RelativeLocation = { X=-5025.63, Y=20675.1, Z=-256.328 }
    RelativeRotation = { Yaw=0, Pitch=0, Roll=0 }
    RelativeScale3D = { X=0, Y=0, Z=0 }
    Mobility = 0
    IntensityUnits = Unitless (0)
    LightColor = { R=165, G=207, B=255, A=255 }
    AttenuationRadius = 298.883
    CastShadows = false
    IndirectLightingIntensity = 0
    VolumetricScatteringIntensity = 0

Code: Select all

ClassName: SpotLightComponent ObjectName: LightComponent0
    RelativeLocation = { X=76.1125, Y=1.55773, Z=10.8023 }
    RelativeRotation = { Yaw=-1210650066, Pitch=1117756020, Roll=-1210816671 }
    RelativeScale3D = { X=0, Y=0, Z=0 }
    Mobility = 0
    Intensity = 80
    LightColor = { R=255, G=245, B=214, A=255 }
    AttenuationRadius = 546.888
    OuterConeAngle = 40.9905
    InnerConeAngle = 0
    SourceRadius = 0
    SourceLength = 0
    Temperature = 0
    bUseTemperature = false
    bAffectsWorld = false
    CastShadows = false
    IntensityUnits = Candelas (1)
    bUseInverseSquaredFalloff = false
    LightFalloffExponent = 0
    bCastVolumetricShadow = true
    IndirectLightingIntensity = 0
    VolumetricScatteringIntensity = 0.4
    ShadowBias = 0

Code: Select all

ClassName: SphereReflectionCaptureComponent ObjectName: NewReflectionComponent
    InfluenceRadius = 2376.15
    Brightness = 2
    RelativeLocation = { X=-4988.86, Y=38461.3, Z=-62.4054 }
And some results

Vampyr Scotland Castle interior (with Billie Lurk from Dishonored 2: Death of the Outsider)
https://www.youtube.com/watch?v=1Fukg8H_YH4

Little Nightmares 2 School (a Room)
https://www.youtube.com/watch?v=pOtWKyHrUR0

Paper Dolls 2 (with Empress Jessamine, from Dishonored 1)
https://www.youtube.com/watch?v=VoC2zkKOsxM

I'm really interested in cross engine part, so someone that knows Unity or some other 3-D engine maybe can talk to me about porting some maps from Unreal Engine 4 to those engines

Please note: what I've done is very simple parsing, so no landscape objects, no fancy materials (just the basic ones generated by Gildor's heuristics), basically just a glorified copying and pasting of transforms from source engine (UE4) to destination engine (UE4) :D

Klaus
n00b
Posts: 11
Joined: Mon Feb 29, 2016 10:59 pm
Has thanked: 4 times
Been thanked: 1 time

Re: porting UE4 maps cross engines (well, eventually :D)

Post by Klaus » Thu Feb 18, 2021 11:39 am

Looks very promising !
Do you think it could also apply to Unreal Engine 3 games ?

bstrn
ultra-n00b
Posts: 1
Joined: Thu Nov 26, 2020 9:00 pm

Re: porting UE4 maps cross engines (well, eventually :D)

Post by bstrn » Fri Feb 19, 2021 6:44 am

Any way you could have it export the entire map as .fbx/.blend/gltf? Txt file is useful for a few things, mainly matching lights, but porting cross-engine would be 5000x easier that way. Fbx/.blend especially because they store light data and can be imported into unity easily. If not, would the umodel author be interested in implementing your code?

Also, will you be releasing any of this for the rest of us to try?

Makoto
beginner
Posts: 32
Joined: Sat Jun 11, 2016 6:41 pm
Has thanked: 13 times
Been thanked: 7 times

Re: porting UE4 maps cross engines (well, eventually :D)

Post by Makoto » Tue Feb 23, 2021 4:59 pm

bstrn wrote:
Fri Feb 19, 2021 6:44 am
Any way you could have it export the entire map as .fbx/.blend/gltf? Txt file is useful for a few things, mainly matching lights, but porting cross-engine would be 5000x easier that way. Fbx/.blend especially because they store light data and can be imported into unity easily. If not, would the umodel author be interested in implementing your code?

Also, will you be releasing any of this for the rest of us to try?
Agreed, i'd be very interested in this too.

philoosopher
ultra-n00b
Posts: 2
Joined: Wed Feb 17, 2021 12:58 pm

Re: porting UE4 maps cross engines (well, eventually :D)

Post by philoosopher » Fri Mar 05, 2021 3:10 am

Klaus wrote:
Thu Feb 18, 2021 11:39 am
Do you think it could also apply to Unreal Engine 3 games ?
It should, maybe not perfect, but some stuff should work. I vaguely recall I tried a dishonored map, but some BSPs were missing.

bstrn wrote:
Fri Feb 19, 2021 6:44 am
Any way you could have it export the entire map as .fbx/.blend/gltf?
I vaguely recall I've seen on Github some porting of UE4 maps to Blender, but I don't know exactly who and how, maybe you can search on Github?

bstrn wrote:
Fri Feb 19, 2021 6:44 am
If not, would the umodel author be interested in implementing your code?
I have no idea, ask Gildor on his forum?

bstrn wrote:
Fri Feb 19, 2021 6:44 am
Also, will you be releasing any of this for the rest of us to try?
Makoto wrote:
Tue Feb 23, 2021 4:59 pm
Agreed, i'd be very interested in this too.
This is meant as an exercise mostly for programmers, I don't have any stand-alone tool, as I mentioned is mostly a simple extension of UEViewer.

But it should work with very simple programming efforts.
Here is my fork https://github.com/dhk-room101/UEViewer I keep it manually updated ( don't ask :D) with Gildor's.
This class is where most of my work is https://github.com/dhk-room101/UEViewer ... irdParty.h, starting from

Code: Select all

#if UNREAL4
Below is a dry and uninteresting example of how the parser works in Unreal, it doesn't show code, but it shows automation, it automatically creates a Chinese Market from Man of Medan, I manually add only a simple floor with a cobblestone material :D But it should show that a similar plaintext parser can be added to Unity or any other 3-D engine.

https://www.youtube.com/watch?v=agFoYaz3xHk

This entire exercise is inspired by smarties like Gildor and Daemon, my actual contributions are minimal :D

Post Reply